调用动态方法名称(来自字符串的methodname)

时间:2013-04-22 12:03:53

标签: coldfusion cfml openbd

如果我有

<cfset methodName = "a">
<cfset object = createObject(...)>

如何从组件methodName调用名为object的函数。

我会期待一些事情
<cfset object[methodName]()>

可以在JS中使用,但这似乎不起作用。我知道我可以使用cfinvoke,但我认为我不需要深入研究为什么我不想使用该标记(现在将其用作临时修复)。

4 个答案:

答案 0 :(得分:2)

基于脚本的代码在Adobe ColdFusion 10+中有cfinvokeinvoke()

答案 1 :(得分:2)

您可以将unknown / dynamic方法设置为对象中的显式键,然后从该键执行:

<cfset methodName = "a">
<cfset object = createObject(...)>
<cfset object.doMethod = object[methodName]>
<cfset object.doMethod()>

仍然不是很优雅,但它避免了<cfinvoke>evaluate()

答案 2 :(得分:0)

它是klutzy但是,你总是可以将代码行写入.cfm文件,然后将其包括在内。

答案 3 :(得分:-1)

cfinvokeevaluate('object.#a#()')(确保您可以信任)