差異

2017-05-23 105 views
2

我認爲應該延長.cfc組件,但我讀了cfwheels框架源在那裏我看到這樣的事情:差異

<cfcomponent output="false" displayName="Controller"> 
    <cfinclude template="../wheels/controller.cfm"> 
</cfcomponent> 

是什麼擴展的區別該組件幷包含上面所做的模板?

另外,是否有任何我應該記住的範圍問題?

+0

這是一個名爲[Mixin](https://en.wikipedia.org/wiki/Mixin)的設計模式:「在面向對象的編程語言中,mixin是一個類其中包含供其他類使用的方法,而不必是其他類的父類。 [...] Mixins有時被描述爲「被包含」而不是「被繼承」。「就範圍而言,包含文件中的函數仍應適當變化範圍,並且包含的​​函數可訪問對象 – beloitdavisja

回答

4

我認爲這完全取決於包含/擴展文件中的內容。這可能是這樣的一個原因是因爲你不能將CFC擴展到當前級別以下(不能擴展=「.. /wheels/controller.cfm」),所以這基本上只是「代理」該文件直接。爲了擴展「../wheels/controller.cfm,你首先必須通過在本地目錄(proxy.cfc)中創建一個新的cfc來代替文件,然後cfincluding controller.cfm文件,然後擴展代理。從概念上講,我認爲一個包含的cfm文件可能具有解決單個問題的特定功能,而擴展的cfc文件可能應該是一個完整的功能塊,它可以發生在其自身上以保持擴展類需要的行爲

+0

我想還有一件事是你可以直接包含多個文件,但不能直接擴展多個文件。 – Shawn

+0

與Ruby相關,但仍然適用:http://knowpapa.com/usecase-dependencies/ – Shawn