Как вы динамически возвращаете неявно установленное свойство в CFC? - PullRequest
1 голос
/ 06 октября 2011

У меня есть CFC, свойства которого я хочу вернуть через одну функцию:

public string function getApplicationSetting(required string setting)
{
    return myCFC.getSetting()
}

Проблема в том, что Setting должен быть динамическим. Если бы это была структура, я мог бы сделать это:

return myCFC.variables[arguments.setting]

Другими словами, Setting в getSetting() должен отражать входящий аргумент. Я подхожу к этому неправильно? Есть ли лучший способ сделать это?

1 Ответ

4 голосов
/ 06 октября 2011

Предполагая, что вы находитесь в ColdFusion 8, вы захотите взглянуть на функцию onMissingMethod () в ColdFusion.

Примерно такой непроверенный пример, который я только что написал:

<cffunction name="onMissingMethod"> 
    <cfargument name="missingMethodName" type="string"> 
    <cfargument name="missingMethodArguments" type="struct"> 

    <cfif left(arguments.missingMethodName, 3) eq "get">
        <cfreturn variables[right(arguments.missingMethodName, len(arguments.missingMethodName)-3)] />
    </cfif>

</cffunction>

Если вы находитесь в ColdFusion 9, то неявные геттеры уже являются частью сделки, если выопределите свои свойства правильно.

Component Person accessors=true {
    property firstname;
    property lastname;
    property age;
    property city;
    property state;
}

Вышеуказанный компонент автоматически будет иметь getLastname (), getFirstname () и т. Д.

Ссылка: http://www.rupeshk.org/blog/index.php/2009/07/coldfusion-9-implicitgenerated-cfc-methods/

...