2011-07-27 3 views
1

[OK]を、このfuncは意味がありませんが、私は一例として、それを使用しています:ローカルスコープなしでEvaluate()を取り除くにはどうすればいいですか?

<cffunction name="blah"> 
    <cfset var myFoo = 123> 
    <cfset var varNamePrefix = "my"> 

    <cfset var bar = Evaluate("#varNamePrefix#Foo")> 

    <cfreturn bar> 
</cffunction> 

CF9で、私はlocal["#varNamePrefix#Foo"]を使用することができます。 CF7/8がvar local = structNew()ですべてをリファクタリングせずにEvaluate()を取り除く方法はありますか?

答えて

6

文書化された手段ではありません。 Pre-CF9のみがあるgetPageContext().getActiveFunctionLocalScope()

<cffunction name="blah"> 
    <cfset var myFoo = 123> 
    <cfset var varNamePrefix = "my"> 
    <!--- ie object.method()[keyName] syntax does not seem to be supported ---> 
    <cfset var localScope = getPageContext().getActiveFunctionLocalScope()> 
    <cfset var bar = localScope["#varNamePrefix#Foo"]> 

    <cfreturn bar> 
</cffunction> 
+0

そして、私たちはCF9 +にアップグレードするときにその呼び出しを取り除く必要がありますか? – Henry

+1

私はそれをテストし、getActiveFunctionLocalScopeは9.0.1にまだ存在します。しかし、それ以降に何が起こるかは誰が知っていますか。 – Leigh

関連する問題