2013-07-18 73 views
2

假設我有一個項目,我在該項目中有幾個CFC。爲了舉例,我有一個調試功能general.cfc,我想在mandrill.cfc中使用該功能,而不必將代碼複製並粘貼到後者的cfc中。我已經搜索了這個,直到我可以不再谷歌,我知道我需要在這裏發佈。Coldfusion組件之間的調用函數

有人帶我上學嗎?

+0

不確定爲什麼有近距離投票。這不是一個非常複雜的問題,但它仍然是一個問題,在ColdFusion的背景下是有效的(我想知道投票結束的人甚至是CF用戶嗎?) –

+0

*我想知道投票結束的人是否甚至CF用戶?*令人懷疑,因爲這兩個原因都不適用。問題很清楚,並不太寬泛。投票保留開放。 – Leigh

回答

0

我的解決辦法是讓mandrill.cfcextendgeneral.cfc組件:

<cfcomponent extends="general" name="mandrill" ...> 

參見CreateObject

+3

不同意。從組件的描述來看,Mandrill不是一般的,所以它不是它的一個子類。 –

+0

Matt Busche有個更好的主意。 –

6

這是我會怎麼做

<cfset var objGeneral = createObject("component","general")> 

然後,如果你有一個函數general.cfc調用getName()你可以稱它爲objGeneral.getName()

+0

請記住範圍! ''cfset var objGeneral = createObject(「component」,「general」)>'或''或' Honey

+0

」值得一提的是objGeneral可以在僞構造函數中設置(在函數定義之外,但是在''內),並在整個CFC中使用。 – Honey

+0

原始功能是關於使用功能。 ''會好些嗎? –

2

您應該看看dependency injection的概念,並且您應該專門查看ColdSpring如何在ColdFusion(或DI/1)的上下文中實現它。

基本上你有一個init在Mandrill()的參數,它會採取General對象,然後設置General物體插入Mandrill對象的變量範圍,通過使用variables.general它的方法。

這就是說,這對單身物體最有效。如果您需要在瞬態對象上執行此類操作,我只需在Mandrill代碼(即:現在的Matt Busche建議)中根據需要實例化General對象。

相關問題