cfscript中的dump函数在哪里?

时间:2012-11-27 21:27:11

标签: coldfusion coldfusion-9

  

可能重复:
  How to do a cfdump inside a cfscript tag?

我是Coldfusion的新手,想知道是否有人知道在脚本块内部访问函数的方法。我找不到从那里打电话的方法。

Adob​​e为何删除了它?或者他们现在只是把它称为其他东西?

抱歉 - 我知道这可能是一个非常基本的问题,但就像我说我是新人一样。

3 个答案:

答案 0 :(得分:13)

相当于cfdump的脚本是 writeDump()

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%正确的。