假设我有以下名为Base的组件:
<cfcomponent output="false">
<cffunction name="init" access="public" returntype="Any" output="false">
<cfset variables.metadata = getmetadata(this)>
<cfreturn this>
</cffunction>
<cffunction name="getmeta" access="public" returntype="Any" output="false">
<cfreturn variables.metadata>
</cffunction>
</cfcomponent>
我想在另一个名为Admin的组件中扩展 base :
<cfcomponent output="false" extends="Base">
</cfcomponent>
现在在我的应用程序中,如果我在创建对象时执行以下操作:
<cfset obj = createobject("component", "Admin").init()>
<cfdump var="#obj.getmeta()#">
我得到的元数据告诉我该组件的名称是Admin并且它正在扩展我的Base组件。这一切都很好,但我不想在创建对象时显式调用init()方法。
如果我能在我的Base组件中做这样的事情,我会很好:
<cfcomponent output="false">
<cfset init()>
<cffunction name="init" access="public" returntype="Any" output="false">
<cfset variables.metadata = getmetadata(this)>
<cfreturn this>
</cffunction>
<cffunction name="getmeta" access="public" returntype="Any" output="false">
<cfreturn variables.metadata>
</cffunction>
</cfcomponent>
然而,getmeta() 方法返回的元数据告诉我组件名称是Base,即使它仍在扩展中。关于如何做到这一点的任何想法?