Как вы динамически возвращаете неявно установленное свойство в CFC?

#coldfusion #getter #cfc

#coldfusion #средство получения #cfc

Вопрос:

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

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

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

 return myCFC.variables[arguments.setting]
  

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

Комментарии:

1. посмотрите <cfinvoke> или Evaluate() для вызова функции с динамическим именем функции

Ответ №1:

Предполагая, что вы находитесь в 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 /