#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 /