如果我有
<cfset methodName = "a">
<cfset object = createObject(...)>
如何调用methodName
从组件命名的函数object
。我会期待一些类似的东西
<cfset object[methodName]()>
就像在 JS 中一样,但这似乎不起作用。我知道我可以使用 a cfinvoke
,但是我认为我不需要深入研究我不想使用该标签的原因(现在将其用作临时修复)。
如果我有
<cfset methodName = "a">
<cfset object = createObject(...)>
如何调用methodName
从组件命名的函数object
。我会期待一些类似的东西
<cfset object[methodName]()>
就像在 JS 中一样,但这似乎不起作用。我知道我可以使用 a cfinvoke
,但是我认为我不需要深入研究我不想使用该标签的原因(现在将其用作临时修复)。
cfinvoke
Adobe ColdFusion 10+ 中也有invoke()
基于脚本的代码。
您可以将未知/动态方法设置为对象中的显式键并从该键执行它:
<cfset methodName = "a">
<cfset object = createObject(...)>
<cfset object.doMethod = object[methodName]>
<cfset object.doMethod()>
仍然不是很优雅,但它避免了<cfinvoke>
and evaluate()
。
这很笨拙,但是,您始终可以将代码行写入 .cfm 文件,然后 cfinclude 它。
cfinvoke
或evaluate('object.#a#()')
(确保您可以信任 a)