smarty对象,通过模板访问对象:
一种是注册对象到模板,然后通过类似于用户自定义函数的形式来访问它;另一种方法给模板分配对象,然后通过访问其它赋值变量类似的方法进行访问。
一般情况下,参数通过模板传递给对象的方法和自定义函数获得参数的方法是一样的。一个混合数组作为第一个参数传递,而SMARTY对象作为第二个。
class My_Object() {
function meth1($params, &$smarty_obj) {
return "this is my meth1";
}
}
$myobj = new My_Object;
//注册对象
$smarty->register_object("foobar",$myobj);
//如果想限制成员和函数,外界可以通过列举它们为一个第三注册变量的数组的方式来访问它
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
//如果像传统的对象参数一样一次传递一个参数,设置第四个参数为 FALSE即可。
$smarty->register_object("foobar",$myobj,null,false);
自定义函数:
function test($args){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="<br/><font color='".$args['color']."'>" size='".$args['size']."'>".$args['con']."</font>";
}
return $str;
}
必须遵守文件名格式:function.自定义函数名.php
函数名格式:
function smarty_function_自定义函数名($params,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="<br/><font color='".$args['color']."'>" size='".$args['size']."'>".$args['con']."</font>";
}
return $str;
}
//无需注册
以插件的形式增加自定义块函数
必须遵守文件名格式:function.自定义函数块名.php
函数名格式:
function smarty_block_自定义函数块名($params,$con,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="<br/><font color='".$args['color']."'>" size='".$args['size']."'>".$con."</font>";
}
return $str;
}
//无需注册