古いサイトをCF 10に変換していて、自分のヘルパーコードをいくつか持ってきたかったのです。ColdFusion - クエリをCFCセッターに変換する
コードは、クエリを見て、私たちのインスタンスである事を発見し、それらを取り込みます
<cffunction name="populateSelf">
<cfargument name="source" type="query" required="yes" />
<cfif arguments.source.recordcount EQ 1>
<cfloop list="#arguments.source.columnlist#" index="local.col">
<cfif structKeyExists(variables.instance, local.col)>
<cfset variables.instance[local.col] = arguments.source[local.col]) />
</cfif>
</cfloop>
</cfif> <!--- one record? --->
</cffunction>
私が使用して私たちの現在のプロパティ「のgetMetaDataを()」の便利な評価でstructKeyExists(variables.instance, local.col)
を交換しました、 ...
ために、私は<cfset this[local.col] =arguments.source[local.col] />
に変更した場合<cfset variables.instance[local.col] = arguments.source[local.col]) />
が、それは暗黙のセッターを無視し、ちょうどこの範囲に結果を置きます:が、私は次の行とのトラブルを抱えています私たちのセッターを試してみて、呼び出すために、私はこのコードのビットを試してみました:
<cfset setValue =arguments.source[local.col] />
<cfset evaluate("set#local.col#('#setValue#')" />
が、これは(あまりにも、文字列内の任意の「'」のをエスケープする必要が)複雑でエラーが発生しやすいようです。
明示的にthis.setPROPERTYNAME(query.COLUMN)
を数回呼び出すことなく、クエリを使用してCFCのプロパティの一部またはすべてを読み込む最良の方法は何ですか?あなたが動的にメソッドを呼び出したい場合は
はい! "メソッドを動的に呼び出すにはどうすればいいですか?"私は正しい動詞を使用することができませんでした... stoopid休日、私の脳が漏れている。 –
ちょっとスティーブン... @ baynezyの答えは私より優れています!彼は私が提案したものではなく、彼が提案したものと一緒に走るべきです。 –