cfscriptの関数として定義されたCFCのメソッドは、デフォルトでoutput = falseであると思っていましたが、cfcexplorer.cfc(CFCに直接ブラウザ)でCFCを開くとOutput:enabledと表示されます。CFCのcfscript関数では、デフォルトでoutput = falseになっていますか?
cfcexplorer.cfcのバグ?
cfscriptの関数として定義されたCFCのメソッドは、デフォルトでoutput = falseであると思っていましたが、cfcexplorer.cfc(CFCに直接ブラウザ)でCFCを開くとOutput:enabledと表示されます。CFCのcfscript関数では、デフォルトでoutput = falseになっていますか?
cfcexplorer.cfcのバグ?
短い回答: 問題ではありません。
cfscript
明示的にwriteOutput()を呼び出さない限り、何も出力しません。これには、cfscript
の機能と、機能外の任意のcfscript
コードが含まれます。
これはCFタグの構文とは異なります。これは、デフォルトではタグ間に空白を少なくとも出力します。 cfscript
では、書き込むテキストはすべてCFMLエンジンによってコンパイルされます。 CFタグでは、書き込むテキストはすべて出力バッファに書き込まれ、ブラウザに送られます。
長い答え: 出力属性を指定しないのと同じです。
cfscript
ブロックは何も出力しません。 cfsilent
でラップされていない場合、タグブロックは空白を出力します。はい、cffunctionsでさえ、出力属性がfalseに設定されていると、出力は破棄されます。
Peter Boughtonの答えの本質は正しいです。それはcfsilent
でもcfoutput
でも包まれていません。出力は禁止されていませんが、明示的に行わない限り発生しません。
いつでもタグベースのcffunction
をスクリプトと組み合わせて、両方の世界のベストを得ることができます。何かのようなもの...
<cffunction name="x" output="false" access="package">
<cfargument name="y" type="string" required="false" default="YY" />
<cfscript>
var someValue = y & "something";
writeOutput("test"); // this will not be written
return someValue;
</cfscript>
</cffunction>
これは、あなたがVAR文を含め、CFScriptにして体を埋める、その後、(あなたがcfscript
関数を使って行うことができない)cffunction
タグに出力し、アクセスを指定するだけでなく、引数はオプションとすることを可能にすることができますし、関数は戻ります。もちろん
、その機能のために、あなたはoutput
属性を削除するか、true
に変更した場合、それはます出力「test
」返す前に。
私は完全にはわかりませんが、スクリプトの機能はcffunction
タグと同じです。デフォルトではtrue
でもfalse
でもありません。 cffunction
ためoutput
属性を設定
は、以下の場合です:
true
はcfoutput
に包まれている機能と同等です。false
は、cfsilent
でラップされている関数に相当します。cfoutput
でもcfsilent
でもラップされていない標準コードと同等です。しかし、私はcfscript
を使用することはほとんどないが、これは実際にはそうでないかもしれない - 私たちは他の人が一緒に来て、これを確認または修正のいずれかを待つ必要があります。
cfscript関数は奇妙な猿です。彼らは両方の種類です。 output = "false"と指定することはできませんが、writeOutput()を使用するまでは可能ですが、cfcexplorerによってoutput = "true"としてレポートされます。 cfml諮問委員会が今見ているのは奇妙な問題です。
これは正解だと思いますが、誰かが確認できますか?ありがとうございました。 – Henry
実際、Peter Boughtonの答えと私の答えはどちらも正しいと言えます。 –
CF9では、cfscriptで定義された関数にオプションの引数を付けることができます。 [CFScriptでのコンポーネントと関数の定義](http://help.adobe.com/jp/ColdFusion/9.0/Developing/WSE99A664D-44E3-44d1-92A0-5FDF8D82B55C.html)を参照してください。 –
悲しいことに、これは実際には正しくありません。 cfscript関数でORMの結果に 'SerializeJSON()'を実行すると、3行の空白が表示されます。 'output = 'no'の' cffunction'では、空白がありません。 – Nucleon
修正 - cfscript関数にoutput = "no"を設定すると、この動作をスケルチできます。 – Nucleon