ColdFusion中的继承体现在CFCs,用法就是在<cfcomponent>中加入属性extends,简单的说,sub.cfc通过继承parent.cfc,就自动拥有了parent.cfc中的(constructor构造器中的)变量、属性和公开的(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”
自定义标签具有一般coldfuion标签一样的性质。他们可以完成下面的任务:
- 带差数。
- 可以有标签主体,开始和结束标签。
- 当遇到开始标签的时候时候 coldfusion可进行特定的操作。
- 如果有结束标签,Coldfuion又可以进行不同的操作,该操作可以是和仅有开始标签进行的操作不同。
- 在自定义标签里面可以包含任何coldfusion页面里合法的元素,包括Coldfusion内建标签,自定义标签,甚至JSP标签或者Javascript代码。
- 允许递归调用,就是说,如果设计恰当,一个自定义标签内部可以调用本身。
- 通过全局变量向调用页面返回结果,但是自定义标签不能象函数那样直接返回结果。
虽然自定义标签和被 cfincluede标签引用的页面都是coldfuion页面,但是coldfuion对他们的处理方式是不同的。 当页面调用一个自定义标签,该页面的代码将暂时停止执行知道自定义标签内的代码全部被执行完。 当自定义标签的代码执行完毕,将返回到调用该标签的页面,继续执行该页面的代码。 下面的图例示范了这一过程。 箭头表示coldfuion对页面执行的流程。
4.1、调用自定义cfml标签
不像内建标签,你可以通过下面三种方法调用自定义的cfml标签:
- 直接调用。
- 使用cfmodule标签调用。
- 使用cfimport标签调用标签库目录。
直接调用一个cfml自定义标签,只需要把改标签所在的cfm文件的文件名去掉.cfm的扩展名,在前面加上cf_前缀,然后放到尖括号<>里就行了。 比如说,如果用来存放自定义标签代码的文件名是mytag.cfm,我们可以用下面的方式来直接调用该标签:
<cf_myTag>
同时只要给标签加上斜杠(/),就可以构成一个结束的标签:
</cf_myTag>