2

重複の可能性:
cfscript タグ内で cfdump を実行するには?

私は Coldfusion を初めて使用し、スクリプト ブロック内で関数にアクセスする方法を誰かが知っているかどうか疑問に思いました。そこから呼び出す方法が見つかりません。

アドビがそれを削除したのはなぜですか? それとも、彼らは今それを別の名前で呼んでいますか?

申し訳ありませんが、これはおそらく本当に基本的な質問だと思いますが、私が言ったように、私は初心者です。

4

3 に答える 3

13

cfdumpに相当するスクリプトはwriteDump ()です。

writeOutput () およびwriteLog () 関数を使用して、cfoutput と cflog に同じパターンが使用されています。

于 2012-11-27T22:42:40.270 に答える
0

writeDump()

どうやらColdFusion9では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

サーバースコープで使用されているのを見たこともありますが、これは本番コードでは絶対に行わないでください。デバッグはOKです。最後の手段として推測しますが、忘れずに削除してください。

個人的には、これらのオプションはどちらもおそらく理想からは程遠いと思います。Adobeが関数の代わりにスクリプトを提供するのに非常に長い時間がかかったのは非常に残念です。多くの苦痛を救ったでしょう。

しかし、うまくいけば、CF9を使用している場合、これはすべて無関係であり、新しいwritedump()関数を使用して、最終的に追加されます。

于 2012-11-27T21:45:02.187 に答える
0

もう少し明確にするために、例を示します。

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

ピーターの答えは 100% 正しいです。

于 2012-11-28T01:22:09.407 に答える