background image

Smarty 中如何获取数组的长度以及 smarty 调用 php 函数的说明

本文为大家分享介绍了对 Smarty 中如何获取数组的长度以及 smarty 调用 php 函数的

方法,供大家参考下

Smarty

 

中如何获取数组的长度

前提假设:
分配了一个数组 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 的本

意就是要实现代码和模板分离,应该认定模板就是界面设计的人员用的,如果过多地加
复杂逻辑,对他们来说就是一种折磨了。