我是Coldfusion的新手,想知道是否有人知道在脚本块内部访问函数的方法。我找不到从那里打电话的方法。
Adobe为何删除了它?或者他们现在只是把它称为其他东西?
抱歉 - 我知道这可能是一个非常基本的问题,但就像我说我是新人一样。
答案 0 :(得分:13)
cfoutput和cflog使用了相同的模式,writeOutput()和writeLog()函数。
答案 1 :(得分: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
我甚至看到它在Server范围中使用过,但是永远不应该在生产代码上完成。好的调试我想作为最后的手段,只要确保你记得删除它。
就我个人而言,我认为这两个选项可能都不太理想,而且很长一段时间Adobe提供替代该功能的脚本是一件非常遗憾的事。本来可以节省很多痛苦。
但是希望如果你使用的是CF9,那么所有这些对你来说都是无关紧要的,你可以使用新的writedump()函数,现在他们最终将它添加进来了。
答案 2 :(得分:0)
要更清楚一点并提供一个例子:
<cfscript>
SomeString = 'ABC';
writeDump(SomeString);
</cfscript>
彼得的回答是100%正确的。