Как избавиться от Evaluate () без локальной области видимости (pre-CF9)? - PullRequest
1 голос
/ 28 июля 2011

Хорошо, эта функция не имеет смысла, но я просто использую ее в качестве примера:

<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 способ избавиться от Evaluate() без рефакторинга всего с помощью var local = structNew()?

1 Ответ

6 голосов
/ 28 июля 2011

Не документированными средствами. До 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>
...