ColdFusion中的繼承體現(xiàn)在CFCs,用法就是在<cfcomponent>中加入屬性extends,簡(jiǎn)單的說(shuō),sub.cfc通過(guò)繼承parent.cfc,就自動(dòng)擁有了parent.cfc中的(constructor構(gòu)造器中的)變量、屬性和公開(kāi)的(public)方法,比如:
<!--- parent.cfc --->
<cfcomponent>
<cffunction name="getSth">
<cfreturn "this is parent class">
</cffunction>
</cfcomponent>
<!--- sub.cfc --->
<cfcomponent extends="parent">
<cffunction name="getSthFromParent">
<cfreturn super.getSth()>
</cffunction>
</cfcomponent>
<!--- test.cfm --->
<cfset Obj = createObject("component", "sub")>
<cfset temp = Obj.getSthFromParent()>
<cfoutput>#temp#</cfoutput>
test.cfm將輸出:“this is parent class”
自定義標(biāo)簽具有一般coldfuion標(biāo)簽一樣的性質(zhì)。他們可以完成下面的任務(wù):
- 帶差數(shù)。
- 可以有標(biāo)簽主體,開(kāi)始和結(jié)束標(biāo)簽。
- 當(dāng)遇到開(kāi)始標(biāo)簽的時(shí)候時(shí)候 coldfusion可進(jìn)行特定的操作。
- 如果有結(jié)束標(biāo)簽,Coldfuion又可以進(jìn)行不同的操作,該操作可以是和僅有開(kāi)始標(biāo)簽進(jìn)行的操作不同。
- 在自定義標(biāo)簽里面可以包含任何coldfusion頁(yè)面里合法的元素,包括Coldfusion內(nèi)建標(biāo)簽,自定義標(biāo)簽,甚至JSP標(biāo)簽或者Javascript代碼。
- 允許遞歸調(diào)用,就是說(shuō),如果設(shè)計(jì)恰當(dāng),一個(gè)自定義標(biāo)簽內(nèi)部可以調(diào)用本身。
- 通過(guò)全局變量向調(diào)用頁(yè)面返回結(jié)果,但是自定義標(biāo)簽不能象函數(shù)那樣直接返回結(jié)果。
雖然自定義標(biāo)簽和被 cfincluede標(biāo)簽引用的頁(yè)面都是coldfuion頁(yè)面,但是coldfuion對(duì)他們的處理方式是不同的。 當(dāng)頁(yè)面調(diào)用一個(gè)自定義標(biāo)簽,該頁(yè)面的代碼將暫時(shí)停止執(zhí)行知道自定義標(biāo)簽內(nèi)的代碼全部被執(zhí)行完。 當(dāng)自定義標(biāo)簽的代碼執(zhí)行完畢,將返回到調(diào)用該標(biāo)簽的頁(yè)面,繼續(xù)執(zhí)行該頁(yè)面的代碼。 下面的圖例示范了這一過(guò)程。 箭頭表示coldfuion對(duì)頁(yè)面執(zhí)行的流程。

4.1、調(diào)用自定義cfml標(biāo)簽
不像內(nèi)建標(biāo)簽,你可以通過(guò)下面三種方法調(diào)用自定義的cfml標(biāo)簽:
- 直接調(diào)用。
- 使用cfmodule標(biāo)簽調(diào)用。
- 使用cfimport標(biāo)簽調(diào)用標(biāo)簽庫(kù)目錄。
直接調(diào)用一個(gè)cfml自定義標(biāo)簽,只需要把改標(biāo)簽所在的cfm文件的文件名去掉.cfm的擴(kuò)展名,在前面加上cf_前綴,然后放到尖括號(hào)<>里就行了。 比如說(shuō),如果用來(lái)存放自定義標(biāo)簽代碼的文件名是mytag.cfm,我們可以用下面的方式來(lái)直接調(diào)用該標(biāo)簽:
<cf_myTag>
同時(shí)只要給標(biāo)簽加上斜杠(/),就可以構(gòu)成一個(gè)結(jié)束的標(biāo)簽:
</cf_myTag>