[Примечание: включение кода в ваш cfcs, как правило, является плохой практикой (см. ответы ниже), так что считайте это просто исследованием]
Подводя итог, у меня есть класс, подкласс и один метод, который переопределяется подклассом. Когда я жестко кодирую метод в дочернем классе, все работает нормально, когда я использую cfinclude для включения его в псевдоконструктор в стиле миксина, я получаю «Подпрограммы не могут быть объявлены более одного раза». ошибка.
Это кажется довольно простым. Чего мне не хватает: этого миксина?
родительский класс:
<cfcomponent >
<cffunction name="hola" hint="i am the parent method">
<cfreturn "hola - parent">
</cffunction>
</cfcomponent>
дочерний класс:
<cfcomponent extends="mixinTestParent">
<!--- this would work, successfully overridding parent method
<cffunction name="hola" hint="i am the child method">
<cfreturn "hola - child">
</cffunction>--->
<cfinclude template="mixinTestInc.cfm">
<cffunction name="init" access="public" returntype="any" output="false">
<cfreturn this>
</cffunction>
</cfcomponent>
включать:
<cffunction name="hola" hint="i am the child method" access="public">
<cfreturn "hola - child">
</cffunction>
бегун:
<cfset test = new mixinTestChild().init()>
<cfdump var="#test.hola()#">
заранее спасибо!!