PHP
—
笔记 在 smarty 中调用 php 内置函数的方法
在 smarty 中调用 php 的内置函数,相信很多人都不是很很了解 smarty 的一个重要功能,就是
能在 smarty 模板里面调用 php 的内置函数
相信有很多朋友还不知道,可以在 smarty 模板里调用 php 的内置函数,我们一起来看看
它的用法。
模板书写:
{'param1'|functionName:'param2':'param3'}
php 函数原型:
echo
functionName('param1','param2','param3');
实例:
{'1234567'|
substr
:'1':'2'}
下面这个和函数的参数顺序有关系
{'a'|
str_replace
:'A':'abcd'}
直接延伸到,直接在 php 中写一个函数调用,不需要注册修改器的.
更深一步的研究:发现数组会出错.
分配了一个数组
array
给 Smarty,假设 Smarty 的分界符为'{' 和'}'。
在很多资料上都看到,在 Smarty 中要求数组的长度时,可以用在数组后便加|
count
的方
法调用。即通过{
array
|
count
}
获得
array
的长度。但是今天在写模板时,发现这样得不到数
组的长度,而只是得到一个返回的字符串 Array。也就是说仅仅是返回了{
array
}的结果,
而没有返回其
array
的长度。
查看 smarty\plugins 文件夹,发现并没有
count
的相关方法,也就是说,
count
是直接调用
了 php 中的方法。
后来通过网络上的资料,发现可以在
count
前面加@,从而正确的获取数组的长度。再进
一步查看 Smarty 的源码,发现 Smarty
对属性调节器后边的 方法名进行处理时,会对前
边加@的进行特殊处理。因此作出判断:在 Smarty 中的属性调节器中调用 php 中定义好的
函数时,可以通过加@
来表示。
1、对类型为数组的方法进行测试时,发现不加@符号都会出错。比如:要对一个数组调用
count
方法求出数组的长度,就可以这样调用{
array
|@
count
},而要对数组调用
end
方法得
出数组的最后一组数据时,则可以通过{
array
|@
end
}
。
2、在对字符串的相关函数进行测试,发现加不加@
都可以正常的调用。
3、其他的尚未认真测试。
对于在 smarty 中调用复杂的 php 函数不予鼓励,因为 Smarty 的本意就是要实现代码和模
板分离,不要偏离了人家的设计初衷。