您现在的位置:首页 > 教案格式 > 正文

变量之间的相关关系 ThinkTemplate模板引擎的设计和使用方法(3)

2017-12-22 17:04 网络整理 教案网

统计学相关关系rsp_相关关系是指变量之间_变量之间的相关关系

基于某些兼容性考虑,通常在模板文件中可以直接插入php代码,用来完成模板标签所无法完成或者比较困难的功能。这种方式与标签的互补可以满足绝大多数的模板需要。事实上,我在用其他模板引擎的时候,都会经常在模板文件中直接添加一些个别的php代码来辅助。需要注意的是并不是所有的模板引擎都支持在模板中直接写php代码。

扩展性

任何一个模板引擎的功能都不是为你量身定制的,具有一个良好的可扩展机制也是模板引擎的另外一个考量,Smarty采用的是插件方法来实现扩展,ThinkTemplate由于采用了标签库技术,比Smarty提供了更为强大的定制功能,和Java的TagLibs一样可以支持自定义标签库和标签,每个XML标签都有独立的解析方法,所以可以根据标签库的定义规则来增加和修改标签解析规则。在ThinkTemplate中标签库的体现是采用XML命名空间的方式,

例如:

每个命名空间都有一个对应的标签库XML定义文件,并且还包含有一个用于解析该标签库的类文件。系统默认对cx标签库进行支持,所以在定义cx标签库的标签时候,可以省略XML的命名空间前缀。当系统中存在很多的标签库的时候,每次编译都会加载所有的标签库解析文件,这样会造成一种浪费,因为很多情况,我们可能只是使用其中的一个或者二个标签库。所以,我们还必须在模板页面实现标签库引入功能,来告诉模板引擎当前模板页面需要哪些标签库的支持,从而加载需要的解析类。变量之间的相关关系在ThinkTemplate中,使用tagLib标签来实现这一功能,

例如:,

表示导入html和cx两个标签库的支持。如果没有定义,那么默认只是加载cx标签库。

利用标签库的特性,我们可以非常方便地扩展自己需要的标签,ThinkTemplate正是采用这种机制来内置集成了一些常用的HTML组件标签,

例如:

使用上面的自定义XML标签定义了一个DataGrid组件,省去了复杂的Html代码,在模板第一次执行的时候,模板引擎会把上面的组件标签解析成PHP和Html结合的代码,生成缓存文件。ThinkTemplate中包含的Html标签库中封装了很多有价值的Html组件。

三、标签使用

变量输出

格式:{$varname|function1|function2=arg1,arg2,### }

使用例子:

{$webTitle|md5| strtoupper | substr=0,3}

{$number|number_format=2}

在模板文件中可以使用{$info['name'] }来输出数组变量。

同样,可以使用{$var.key }来输出对象属性变量,并且也支持函数。

系统变量

依然支持函数使用和大小写、空格,以Think.打头,如

{$Think.server.script_name} //输出$_SERVER变量

{$Think.session.session_id|md5} //输出$_SESSION变量

{$Think.get.pageNumber} //输出$_GET变量

{$Think.cookie.name} //输出$_COOKIE变量

系统常量

{$Think.const.__FILE__}

{$Think.const.MODULE_NAME}

或者直接使用

{$Think.__FILE__}

{$Think.MODULE_NAME}

特殊变量

由ThinkPHP系统定义的常量

{$Think.version} //版本

{$Think.now} //现在时间

{$Think.template|basename} //模板页面