1、(第(第45讲)讲) ThinkPHP ThinkPHP 模板引擎运算及函数使用模板引擎运算及函数使用学习目标学习目标 模版输出补充其他杂项 模版运算符 模版函数使用1模版输出补充模版输出补充 数组变量,我们可以使用下面的方式来输出相关的值:$username/输出用户的名称$useremail /输出用户的email地址如果$user是一个对象而不是数组的话,$User = M(name);$User-find(1);$this-assign(user,$User);可以使用下面的方式输出相关的属性值:$user:name/ 输出用户的名称$user:email / 输出用户的email地址
2、3.1版本以后,类的属性输出方式有所调整,支持原生的PHP对象写法,所以上面的标签需要改成:$user-name/ 输出用户的名称$user-email / 输出用户的email地址 (第(第45讲)讲) ThinkPHP ThinkPHP 模板引擎运算及函数使用模板引擎运算及函数使用1模版输出补充模版输出补充 为了方便模板定义,还可以支持点语法,例如$user.name$user.email因为点语法默认的输出是数组方式,所以上面两种方式是在没有配置的情况下是等效的。我们可以通过配置TMPL_VAR_IDENTIFY参数来决定点语法的输出效果,以下面的输出为例:$user.name如果TMP
3、L_VAR_IDENTIFY设置为array,那么$user.name和$username等效,也就是输出数组变量。如果TMPL_VAR_IDENTIFY设置为obj,那么$user.name和$user:name等效,也就是输出对象的属性。如果TMPL_VAR_IDENTIFY留空的话,系统会自动判断要输出的变量是数组还是对象,这种方式会一定程度上影响效率,而且只支持二维数组和两级对象属性。如果是多维数组或者多层对象属性的输出,可以使用下面的定义方式: $user.sub.name/ 使用点语法输出或者使用$usersubname/ 输出三维数组的值$user:sub:name/ 输出对象的
4、多级属性(第(第45讲)讲) ThinkPHP ThinkPHP 模板引擎运算及函数使用模板引擎运算及函数使用2模版运算符模版运算符 内置模板引擎包含了运算符的支持,包括对“+”“ ” “*” “/”和“%”的支持,例如:运算符 使用示例 + $a+$b - $a-$b * $a*$b / $a/$b % $a%$b + $a+ 或 +$a - $a- 或 -$a 综合运算 $a+$b*10+$c 在使用运算符的时候,不再支持点语法和常规的函数用法,例如:$user.score+10 是错误的$userscore+10 是正确的$userscore*$userlevel 正确的$usersco
5、re|myFun*10 错误的$userscore+myFun($userlevel) 正确的(第(第45讲)讲) ThinkPHP ThinkPHP 模板引擎运算及函数使用模板引擎运算及函数使用3模版函数的使用模版函数的使用 仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用。用于模板标签的函数可以是PHP内置函数或者是用户自定义函数,和smarty不同,用于模板的函数不需要特别的定义。模板变量的函数调用格式为:$varname|function1|function2=arg1,arg2,# 说明: 和 $
6、 符号之间不能有空格 ,后面参数的空格就没有问题#表示模板变量本身的参数位置 支持多个函数,函数之间支持空格 支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表 支持变量解析缓存功能,重复变量字串不多次解析使用例子: $webTitle|md5|strtoupper|substr=0,3 (第(第45讲)讲) ThinkPHP ThinkPHP 模板引擎运算及函数使用模板引擎运算及函数使用3模版函数的使用模版函数的使用 编译后的PHP代码就是:$webTitle | md5 | strtoupper | substr=0,3注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是
7、前面的变量或者前一个函数调用的返回结果,如果你的变量并不是函数的第一个参数,需要使用定位符号,例如:$create_time|date=y-m-d,#编译后的PHP是:函数的使用没有个数限制,但是可以允许配置TMPL_DENY_FUNC_LIST定义禁用函数列表,系统默认禁用了exit和echo函数,以防止破坏模板输出,我们也可以增加额外的定义,例如:TMPL_DENY_FUNC_LIST=echo,exit,halt多个函数之间使用半角逗号分隔即可。并且还提供了在模板文件中直接调用函数的快捷方法,这种方式更加直接明了,而且无需通过模板变量,包括两种方式:(第(第45讲)讲) ThinkPHP ThinkPHP 模板引擎运算及函数使用模板引擎运算及函数使用3模版函数的使用模版函数的使用 1、执行函数并输出返回值:格式::function()例如,输出U函数的返回值::U(User/insert)编译后的PHP代码是2、执行函数但不输出:格式:function()例如,调用say_hello函数:say_hello(ThinkPHP)编译后的PHP代码是:(第(第45讲)讲) ThinkPHP ThinkPHP 模板引擎运算及函数使用模板引擎运算及函数使用