假設我有一個項目,我在該項目中有幾個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