2011-10-05 76 views
1

我得到了一个CFC我想通过一个函数返回其属性:如何在CFC中动态返回隐式设置的属性?

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

的问题是,Setting需求是动态的。如果它是一个结构,我可以这样做:

return myCFC.variables[arguments.setting] 

换句话说,在SettinggetSetting()需求,以反映传入的参数。我接近这个错误吗?有一个更好的方法吗?

+1

直视''或'评估()'用于与动态函数调用功能名称 – Henry

回答

4

假设你在ColdFusion 8中,你需要查看ColdFusion中的onMissingMethod()函数。

像这样的事情未经检验例如我刚写了起来:

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