8.3 使用函数

仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用。用于模板标签的函数可以是PHP内置函数或者是用户自定义函数,和smarty不同,用于模板的函数不需要特别的定义。
模板变量的函数调用格式为:{$varname|function1|function2=arg1,arg2,### }说明:
{ 和 $ 符号之间不能有空格 ,后面参数的空格就没有问题
###表示模板变量本身的参数位置
支持多个函数,函数之间支持空格
支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表
支持变量解析缓存功能,重复变量字串不多次解析
使用例子: {$webTitle|md5|strtoupper|substr=0,3}编译后的PHP代码就是:<?php echo (substr(strtoupper(md5($webTitle)),0,3)); ?>注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数调用的返回结果,如果你的变量并不是函数的第一个参数,需要使用定位符号,例如:{$create_time|date="y-m-d",###}编译后的PHP是:<?php echo (date("y-m-d",$create_time)); ?>函数的使用没有个数限制,但是可以允许配置TMPL_DENY_FUNC_LIST定义禁用函数列表,系统默认禁用了exit和echo函数,以防止破坏模板输出,我们也可以增加额外的定义,例如:TMPL_DENY_FUNC_LIST=>"echo,exit,halt"多个函数之间使用半角逗号分隔即可。
并且还提供了在模板文件中直接调用函数的快捷方法,这种方式更加直接明了,而且无需通过模板变量,包括两种方式:
1、执行函数并输出返回值
格式:{:function(…)} 
例如,输出U函数的返回值:{:U('User/insert')}编译后的PHP代码是<?php echo U('User/insert');?>2、执行函数但不输出
格式:{~function(…)} 
例如,调用say_hello函数:{~say_hello('ThinkPHP')}编译后的PHP代码是:<?php say_hello('ThinkPHP');?>