更新:似乎railo根本沒有這個問題。如何使用cfinclude拆分組件並仍使用繼承?
更新:我投票的感覺的人更注重整體,關閉這個問題,因爲我「是否有人有更好的主意分裂大部件」的一部分這個問題(這是我不應該把in),然後是使用cfincludes與cfcomponent的真正問題。
注意:這只是我想要做的一個簡單的例子,以實現這個想法。
我遇到的問題是,我想在cfcomponent中使用cfinclude,這樣我就可以將方法分組爲單獨的文件以提高可管理性。我遇到的問題是當我嘗試擴展另一個也使用cfinclude來管理它的方法的組件時,如下所示。需要注意的是ComponentA擴展以componentB:
ComponentA
==========
<cfcomponent output="false" extends="componentb">
<cfinclude template="componenta/methods.cfm">
</cfcomponent>
componenta/methods.cfm
======================
<cffunction name="a"><cfreturn "componenta-a"></cffunction>
<cffunction name="b"><cfreturn "componenta-b"></cffunction>
<cffunction name="c"><cfreturn "componenta-c"></cffunction>
<cffunction name="d"><cfreturn super.a()></cffunction>
ComponentB
==========
<cfcomponent output="false">
<cfinclude template="componentb/methods.cfm">
</cfcomponent>
componentb/methods.cfm
======================
<cffunction name="a"><cfreturn "componentb-a"></cffunction>
<cffunction name="b"><cfreturn "componentb-b"></cffunction>
<cffunction name="c"><cfreturn "componentb-c"></cffunction>
的問題是,當我嘗試初始化ComponentA我得到一個錯誤:「例程不能被多次聲明的例程已經在不同的模板聲明兩次。 「
這樣做的全部原因是因爲當您使用cfinclude時,它在RUN TIME而不是COMPILE TIME評估。
將方法移動到組件本身並消除使用cfinclude的缺點,我如何解決這個問題或者是否有人有更好的想法分離大型組件?
問題是,使用cfcomponent內部的cfinclude會導致上述的例程錯誤。這是因爲cfinclude直到運行時才執行,因爲一個組件正在擴展另一個組件,coldfusion正在執行包含相同方法名稱的cfincludes,導致錯誤。我的問題是否有解決方法? – rip747 2010-06-12 21:39:34
我明白你的問題,我理解爲:「我試圖用腿拍自己,沒有工作,因爲我的槍吮吸,不能在同一時間吹雙腿,我怎麼能做到這一點? 我在辦公室裏有一個方法,有66個參數和2k行代碼,位於cfk的7k行代碼中,Eclipse不喜歡它,我不喜歡它,我的經理不喜歡它,但是我認爲我不應該通過將它分成7個不同的文件並將其吐到長輩的臉上,而這些長輩會努力尋找最佳的編程方式:) – 2010-06-13 08:24:25
之所以這樣做,是因爲我在嘗試在CFWheels中實現類似於ActiveModel的東西。如果你想看一看源代碼並給我一些建議,那麼它會很感激。 http://github.com/rip747/cfwheels。特別是看看我們如何實現模型部分http://github.com/rip747/cfwheels/tree/master/wheels/model/ – rip747 2010-06-16 12:30:56