cffunction タグの直後に呼び出された場合、これら 2 つのコード ブロックの違いは何ですか。
<cfparam name="bork_bork_bork" default="false">
<cfargument name="bork_bork_bork" required="false" default="false">
cffunction タグの直後に呼び出された場合、これら 2 つのコード ブロックの違いは何ですか。
<cfparam name="bork_bork_bork" default="false">
<cfargument name="bork_bork_bork" required="false" default="false">
<cfparam>
を default 属性とともに使用すると、変数が存在することが保証されます。スコープの指定がないためbork_bork_bork
、スコープに入れていVariables
ます。
<cfargument>
関数に引数を渡すために使用されます。これらの値はArguments
スコープに格納されます。を使用して値にアクセスしますarguments.bork_bork_bork
。
arguments.bork_bork_bork
と は同じではないことに注意してくださいbork_bork_bork
。のスコープはarguments
関数内にのみあり、もう一方はVariables
スコープに格納され、ページのどこでも有効になります (ただし、そのようにコーディングすることはお勧めしません)。
cfparam は関数とは関係ありません。param/argument はほとんどの言語で交換可能な単語であるため、これは紛らわしいことがわかります。ユーザー定義関数はバージョン 5 まで CF に追加されなかったため、変数を初期化する方法として cfparam を使用しても競合は発生しなかったことに注意してください。さらに、cfparam タグはおそらく、現在は廃止されている関数 ParameterExists() からその名前を付けたものです (またはその逆 - バージョン 4.0 (1999) で CF に取り掛かるまでに、その関数はすでに廃止されていたため、背後にある歴史を見逃していました)それ)
cfparam は、変数がまだ存在しない場合に、変数のデフォルトを設定する方法です。以下を実行するためのショートカットです。
<cfif NOT isDefined('bork_bork_bork')>
<cfset bork_bork_bork = 'myDefaultSetting'>
</cfif>
cfargument は、CFC 関数またはユーザー定義関数に渡される引数を定義する開始タグの後にのみ使用できます。
私の記憶では、cffunction タグと cfargument タグの間には何も存在できないため、cffunction タグの直後に配置する必要があります。
関数内から、引数スコープ {arguments.bork_bork_bork} または配列 {arguments 1 }を介して cfargument にアクセスします。
cfparam は、リクエストで変数が使用可能であることを確認するだけであり、cfargument の代わりに使用しないでください。さらに読むには、以下をチェックしてください。