cfscript で関数として定義されている CFC のメソッドはデフォルトで output=false であると思っていましたが、cfcexplorer.cfc で CFC を開くと (ブラウザで CFC に直接アクセス)、Output: enabled と表示されます。
cfcexplorer.cfc のバグ?
cfscript で関数として定義されている CFC のメソッドはデフォルトで output=false であると思っていましたが、cfcexplorer.cfc で CFC を開くと (ブラウザで CFC に直接アクセス)、Output: enabled と表示されます。
cfcexplorer.cfc のバグ?
短い答え: 関係ありません。
cfscript明示的に writeOutput() を呼び出さない限り、何も出力しません。これには、関数内の関数cfscriptだけでなくcfscript、関数外のコードも含まれます。
これは、デフォルトでタグ間に少なくとも空白を出力する CF タグの構文とは異なります。ではcfscript、記述したテキストはすべて CFML エンジンによってコンパイルされます。CF タグでは、記述したテキストはすべて出力バッファーに書き込まれ、ブラウザーに送信されます。
長い答え: 出力属性を指定しないのと同じです。
cfscriptブロックは何も出力しません。タグブロックは、 でラップされていない限り、cfsilent他に何もない場合は空白を出力します。はい、cffunctions でも可能ですが、output 属性が 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>
これにより、タグで出力とアクセスを指定できるcffunctionだけでなく、引数をオプションにすることもできます (これは関数を介して行うことはできませんcfscript)。次に、var ステートメントと関数 return を含む cfscript で本文を埋めます。
もちろん、その関数については、output属性を削除するか に変更するとtrue、返される前に " "が出力されます。test
cfscript 関数は奇妙なサルです。彼らは両方のようなものです。それらが output="false" であることを指定することはできませんが、writeOutput() を使用するまで指定できませんが、cfcexplorer によって output="true" としてレポートされます。これは、cfml 諮問委員会が現在検討していると思われる奇妙な問題です。
私は完全に確信しているわけではありませんが、スクリプト関数はcffunctionこの点でタグと同じであると推測しています.デフォルトはどちらtrueでもありませんfalse.
outputの属性を設定するcffunctionと、次のようになります。
trueでラップされている関数と同等cfoutputです。falseでラップされている関数と同等cfsilentです。cfoutputですcfsilent。ただし、私は をほとんど使用cfscriptしません。また、実際にはそうではない可能性もあります。他の人がやって来て、これを確認または修正するのを待つ必要があります。