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
しません。また、実際にはそうではない可能性もあります。他の人がやって来て、これを確認または修正するのを待つ必要があります。