假设我有一个项目,我在该项目中有几个CFC。为了举例,我有一个调试功能general.cfc
,我想在mandrill.cfc
中使用该功能,而不必将代码复制并粘贴到后者的cfc中。我已经搜索了这个,直到我可以不再谷歌,我知道我需要在这里发布。Coldfusion组件之间的调用函数
有人带我上学吗?
假设我有一个项目,我在该项目中有几个CFC。为了举例,我有一个调试功能general.cfc
,我想在mandrill.cfc
中使用该功能,而不必将代码复制并粘贴到后者的cfc中。我已经搜索了这个,直到我可以不再谷歌,我知道我需要在这里发布。Coldfusion组件之间的调用函数
有人带我上学吗?
我的解决办法是让mandrill.cfc
extend的general.cfc
组件:
<cfcomponent extends="general" name="mandrill" ...>
不同意。从组件的描述来看,Mandrill不是一般的,所以它不是它的一个子类。 –
Matt Busche有个更好的主意。 –
这是我会怎么做
<cfset var objGeneral = createObject("component","general")>
然后,如果你有一个函数general.cfc
调用getName()
你可以称它为objGeneral.getName()
您应该看看dependency injection的概念,并且您应该专门查看ColdSpring如何在ColdFusion(或DI/1)的上下文中实现它。
基本上你有一个init在Mandrill
()的参数,它会采取General
对象,然后设置General
物体插入Mandrill
对象的变量范围,通过使用variables.general
它的方法。
这就是说,这对单身物体最有效。如果您需要在瞬态对象上执行此类操作,我只需在Mandrill
代码(即:现在的Matt Busche建议)中根据需要实例化General
对象。
不确定为什么有近距离投票。这不是一个非常复杂的问题,但它仍然是一个问题,在ColdFusion的背景下是有效的(我想知道投票结束的人甚至是CF用户吗?) –
*我想知道投票结束的人是否甚至CF用户?*令人怀疑,因为这两个原因都不适用。问题很清楚,并不太宽泛。投票保留开放。 – Leigh