NetworkOptimizationExpertTeam内容摘要①模版输出补充其他杂项②模版运算符③模版函数使用(8讲)模版运算符及函数使用(8讲)模版运算符及函数使用1 模版输出补充数组变量,我们可以使用下面的方式来输出相关的值:{$user[name]}//输出用户的名称{$user[email]}//输出用户的email地址如果$user是一个对象而不是数组的话,$User=M(name);$User-find(1);$this-assign(user,$User);可以使用下面的方式输出相关的属性值:{$user:name}//输出用户的名称{$user:email}//输出用户的email地址3.1版本以后,类的属性输出方式有所调整,支持原生的PHP对象写法,所以上面的标签需要改成:{$user-name}//输出用户的名称{$user-email}//输出用户的email地址(8讲)模版运算符及函数使用1 模版输出补充为了方便模板定义,还可以支持点语法,例如{$user.name}{$user.email}因为点语法默认的输出是数组方式,所以上面两种方式是在没有配置的情况下是等效的。我们可以通过配置TMPL_VAR_IDENTIFY参数来决定点语法的输出效果,以下面的输出为例:{$user.name}如果TMPL_VAR_IDENTIFY设置为array,那么{$user.name}和{$user[name]}等效,也就是输出数组变量。如果TMPL_VAR_IDENTIFY设置为obj,那么{$user.name}和{$user:name}等效,也就是输出对象的属性。如果TMPL_VAR_IDENTIFY留空的话,系统会自动判断要输出的变量是数组还是对象,这种方式会一定程度上影响效率,而且只支持二维数组和两级对象属性。如果是多维数组或者多层对象属性的输出,可以使用下面的定义方式:{$user.sub.name}//使用点语法输出或者使用{$user[sub][name]}//输出三维数组的值{$user:sub:name}//输出对象的多级属性(8讲)模版运算符及函数使用2 模版运算符 内置模板引擎包含了运算符的支持,包括对“+”“–”“*”“/”和“%”的支持,例如:运算符使用示例+{$a+$b}-{$a-$b}*{$a*$b}/{$a/$b}%{$a%$b}++{$a++}或{++$a}--{$a--}或{--$a}综合运算{$a+$b*10+$c}在使用运算符的时候,不再支持点语法和常规的函数用法,例如:{$user.score+10}是错误的{$user[score]+10}是正确的{$user[score]*$user[level]}正确的{$user[score]|myFun*10}错误的{$user[score]+myFun($user[level])}正确(8讲)模版运算符及函数使用3 模版函数的使用仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用。用于模板标签的函数可以是PHP内置函数或者是用户自定义函数,和smarty不同,用于模板的函数不需要特别的定义。模板变量的函数调用格式为:{$varname|function1|function2=arg1,arg2,###}说明:{和$符号之间不能有空格,后面参数的空格就没有问题###表示模板变量本身的参数位置支持多个函数,函数之间支持空格支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表支持变量解析缓存功能,重复变量字串不多次解析使用例子:{$webTitle|md5|strtoupper|substr=0,3}(8讲)模版运算符及函数使用3 模版函数的使用编译后的PHP代码就是:{$webTitle|md5|strtoupper|substr=0,3}?phpecho(substr(strtoupper(md5($webTitle)),0,3));?注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数调用的返回结果,如果你的变量并不是函数的第一个参数,需要使用定位符号,例如:{$create_time|date=y-m-d,###}编译后的PHP是:?phpecho(date(y-