[注: CFC にコードを含めることは一般的に悪い習慣です (以下の回答を参照)。そのため、これは単なる調査と考えてください]
要約すると、クラスとサブクラス、およびサブクラスによってオーバーライドされる 1 つのメソッドがあります。子クラスでメソッドをハードコーディングすると、すべて正常に動作しますが、cfinclude を使用して疑似コンストラクターの mixin スタイルに含めると、「ルーチンを複数回宣言することはできません」というメッセージが表示されます。エラー。
これはかなり簡単に思えます。私は何を逃していますか? re: この mixin?
親クラス:
<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()#">
前もって感謝します!!