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