2

可能重复:
如何在 cfscript 标签内执行 cfdump?

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

Adobe 为什么要删除它?还是他们现在只是将其称为其他名称?

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

4

3 回答 3

13

cfdump的等效脚本是writeDump ()

cfoutput 和 cflog 使用了相同的模式,带有writeOutput () 和writeLog () 函数。

于 2012-11-27T22:42:40.270 回答
0

写转储()

显然,在 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 上。该文件有许多标准方法,但您也可以定义自己的附加方法以包含在其中。然后你的 dump() 函数在 APPLICATION 范围内可用。

Application.cfc 文件在这里有一个很好的信息页面。http://www.bennadel.com/blog/726-ColdFusion-Application-cfc-Tutorial-And-Application-cfc-Reference.htm

我什至看到它在服务器范围内使用,但绝不应该在生产代码上这样做。可以调试我想作为最后的手段,只要确保你记得删除它。

就我个人而言,我认为这两个选项可能都远非理想,而且很遗憾 Adob​​e 花了这么长时间才提供该功能的脚本替代方案。本来可以减轻很多痛苦。

但希望如果您使用的是 CF9,那么所有这些对您来说都无关紧要,您可以使用新的 writedump() 函数,现在他们终于添加了它。

于 2012-11-27T21:45:02.187 回答
0

为了更清楚一点并提供一个例子:

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

彼得的回答是 100% 正确的。

于 2012-11-28T01:22:09.407 回答