在Coldfusion中调用组件之间的函数

时间:2013-07-18 17:07:06

标签: function coldfusion cfc cfml

假设我有一个项目,我在该项目中有几个CFC。为了这个例子,我有一个调试函数general.cfc,我想在mandrill.cfc中使用该函数,而不必将代码复制并粘贴到后面的cfc中。我已经用谷歌搜索了这个,直到我不再谷歌了,我知道我需要在这里发布。

有人想带我去学校吗?

3 个答案:

答案 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" ...> 

另见CreateObject