CFPARAMとCFARGUMENTの違いはColdFusion関数の違いですか?
-
12-11-2019 - |
質問
CFFUNCTYタグの直後に呼び出されたときのこれら2つのコードブロックの違いは何ですか:
<cfparam name="bork_bork_bork" default="false">
<cfargument name="bork_bork_bork" required="false" default="false">
. 解決
<cfparam>
は、デフォルトの属性と共に使用されると、変数が確実に存在することを確認します。範囲が指定されていないため、bork_bork_bork
がVariables
スコープに入れられています。
<cfargument>
は関数への引数を渡すために使用されます。これらの値はArguments
スコープに格納されています。arguments.bork_bork_bork
を使用して値にアクセスします。
arguments.bork_bork_bork
とbork_bork_bork
は同じではないことに注意してください。arguments
の範囲は関数内でのみです。もう1つはVariables
スコープに格納されており、ページ上のどこにでも有効になります(私はそれをコーディングすることはお勧めしません。)
他のヒント
cfparamは関数と関係ありません。param /引数がほとんどの言語で交換可能な単語であることを考えると、これが混乱していることがわかります。ユーザー定義関数がバージョン5までCFに追加されていないので、変数を初期化する方法としてCFPARAMを使用する際の競合はありません。さらに、CFPARAMタグはおそらく廃止された関数からその名前を描きました。
cfparamは、変数がまだ存在しない場合は、任意の変数のデフォルトを設定する方法です。次のことをするのはショートカットです。
<cfif NOT isDefined('bork_bork_bork')>
<cfset bork_bork_bork = 'myDefaultSetting'>
</cfif>
.
cfargumentは、CFC関数またはユーザー定義関数に渡される引数を定義するための開始タグの後にのみ使用可能です。
私が思い出すことから、cffunctionタグとcfargumentタグの間には何も存在できませんので、cffunctionタグの直後に表示されなければなりません。
関数内からの引数scope {arguments.bork_bork_bork}を介してcfargumentにアクセスするか、または配列{引数 1 }
cfparamは、cfargumentの代わりに要求に応じて変数が使用可能になることを確認します。さらに読み取りチェックアウトするために: