2

cffunction タグの直後に呼び出された場合、これら 2 つのコード ブロックの違いは何ですか。

<cfparam name="bork_bork_bork" default="false">

<cfargument name="bork_bork_bork" required="false" default="false">
4

4 に答える 4

12

<cfparam>を default 属性とともに使用すると、変数が存在することが保証されます。スコープの指定がないためbork_bork_bork、スコープに入れていVariablesます。

<cfargument>関数に引数を渡すために使用されます。これらの値はArgumentsスコープに格納されます。を使用して値にアクセスしますarguments.bork_bork_bork

arguments.bork_bork_borkと は同じではないことに注意してくださいbork_bork_bork。のスコープはarguments関数内にのみあり、もう一方はVariablesスコープに格納され、ページのどこでも有効になります (ただし、そのようにコーディングすることはお勧めしません)。

于 2012-01-23T21:53:56.007 に答える
2

cfparam は関数とは関係ありません。param/argument はほとんどの言語で交換可能な単語であるため、これは紛らわしいことがわかります。ユーザー定義関数はバージョン 5 まで CF に追加されなかったため、変数を初期化する方法として cfparam を使用しても競合は発生しなかったことに注意してください。さらに、cfparam タグはおそらく、現在は廃止されている関数 ParameterExists() からその名前を付けたものです (またはその逆 - バージョン 4.0 (1999) で CF に取り掛かるまでに、その関数はすでに廃止されていたため、背後にある歴史を見逃していました)それ)

于 2012-01-23T23:46:27.593 に答える
1

cfparam は、変数がまだ存在しない場合に、変数のデフォルトを設定する方法です。以下を実行するためのショートカットです。

<cfif NOT isDefined('bork_bork_bork')>
    <cfset bork_bork_bork = 'myDefaultSetting'>
</cfif>

cfargument は、CFC 関数またはユーザー定義関数に渡される引数を定義する開始タグの後にのみ使用できます。

私の記憶では、cffunction タグと cfargument タグの間には何も存在できないため、cffunction タグの直後に配置する必要があります。

于 2012-01-23T22:00:17.777 に答える
0

関数内から、引数スコープ {arguments.bork_bork_bork} または配列 {arguments 1 }を介して cfargument にアクセスします。

cfparam は、リクエストで変数が使用可能であることを確認するだけであり、cfargument の代わりに使用しないでください。さらに読むには、以下をチェックしてください。

定義

Arguments スコープを配列として使用する

cffunction タグを使用した関数の定義

于 2012-01-23T22:02:58.280 に答える