假设我有一个项目,我在该项目中有几个CFC。为了这个例子,我有一个调试函数general.cfc
,我想在mandrill.cfc
中使用该函数,而不必将代码复制并粘贴到后面的cfc中。我已经用谷歌搜索了这个,直到我不再谷歌了,我知道我需要在这里发布。
有人想带我去学校吗?
答案 0 :(得分:6)
我就是这样做的
<cfset var objGeneral = createObject("component","general")>
然后,如果您在名为general.cfc
的{{1}}中有一项功能,可以通过说getName()
答案 1 :(得分:2)
你应该看一下dependency injection的概念,你应该特别看看ColdSpring如何在ColdFusion(或DI/1)的上下文中实现它。
基本上你在Mandrill
中有一个init()参数,它接受一个General
对象,然后你将General
对象设置为Mandrill
的变量范围对象,通过variables.general
使用其方法。
也就是说,这对单件对象最有效。如果您需要在瞬态对象上执行此类操作,我只需要在General
代码中根据需要实例化Mandrill
对象(即:现在是Matt Busche建议的)。
答案 2 :(得分:0)
我的解决方案是让mandrill.cfc
extend成为general.cfc
组件:
<cfcomponent extends="general" name="mandrill" ...>