2012-11-27 24 views

回答

0

writeDump()

顯然ColdFusion的9已加入writeDump(),所以你應該能夠使用這個從CFSCRIPT塊。

所以,如果你有CF9,那麼你很好。

如果您使用不支持新引入的writeDump()函數的舊版本舊系統,那麼您可以爲它編寫一個包裝器,並將其放置在您的所有文件都可訪問的位置。

這是我寫的包裝器,它可以用於短期調試,可以放在你正在使用的cfc文件上(儘管在提交代碼之前將其刪除 - 否則它只是一團糟),或者你可以把它在全球的某個地方,所以你可以從共享範圍調用它。

這裏是一個包裝函數的例子,你可以使用:

<cffunction name="dump" access="private" returntype="void" hint="dump wrapper"> 
    <cfargument name="stuffToDump" type="any" required="true" hint="what you want to dump"> 
    <cfargument name="abort" type="any" default="false" hint="abort after dump"> 
    <cfargument name="expand" type="any" default="false" hint="expand output"> 
    <cfdump var="#arguments.stuffToDump#" expand="#arguments.expand#"> 
    <cfif #arguments.abort# EQ 1> 
     <cfabort> 
    </cfif> 
</cffunction> 

有可能解決這個問題更好的方法,但是這是我目前使用。

您可以將其暫時放在您目前正在使用的cfc文件上,但顯然不要將其提交到您的代碼庫,因爲您不想在所有文件上使用轉儲功能。

或者你可以把它永久地放到一個cfinclude文件中,並且只是將它包含在你正在調試的文件中。

另一種方法我猜是把它放到Application.cfc中。該文件有許多標準方法,但您也可以定義自己的附加方法以包含在其中。然後在APPLICATION範圍內有你的dump()函數。

這裏有一個關於Application.cfc文件的好信息頁面。 http://www.bennadel.com/blog/726-ColdFusion-Application-cfc-Tutorial-And-Application-cfc-Reference.htm

我甚至已經看到它在服務器範圍中使用,但是這不應該在生產代碼上完成。好的調試我想是最後的手段,只要確保你記得刪除它。

就我個人而言,我認爲這兩個選項可能都不太理想,而且Adobe花了很長時間才提供替代該函數的腳本,這真是太遺憾了。本來會節省很多的痛苦。

但我們希望,如果你正在使用CF9那麼這一切都將是文不對題給你,你可以只使用新writedump()函數現在他們終於加入進去。

+0

噢。謝謝,我會試一試。 –

+1

ColdFusion確實有腳本版本的'cfdump'。它是[writed(()](http://help.adobe.com/zh_CN/ColdFusion/9.0/CFMLRef/WS5A998FA0-0173-4be8-9548-680E8F40A5F2.html) –

+0

哦,是嗎?抱歉。就像我說的我剛接觸Coldfusion。這在CF文檔中沒有提到。謝謝。 –

13

腳本相當於cfdumpwriteDump ()

對於cfoutput和cflog,writeOutput()和writeLog()函數使用了相同的模式。

+1

應該指出,writeDump()是在ColdFusion 9中引入的。在此之前,您必須創建一個UDF才能從CFSCRIPT運行它。 –

+2

\ *聳肩\ *問題是顯式標記CF9所以這裏不是一個真正的問題。無論如何它只是'' –

0

是一個小更清晰,提供了一個例子:

<cfscript> 
    SomeString = 'ABC'; 
    writeDump(SomeString); 
</cfscript> 

彼得的答案是100%正確的。