喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

$5.95 Web Hosting     

上一主题 下一主题
     
标题: [原创] 自己研究了一下smarty注册函数  
 
webboy
金牌会员
Rank: 6Rank: 6
老会员


UID 64695
精华 0
积分 1077
帖子 828
金钱 1077 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2005-6-11
来自 北京
状态 离线
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
自己研究了一下smarty注册函数

问题出处,从数据库中取出了一组数据,数据格式是数组的形式.但需要过滤一下数组的内容.比如当入库的时候加入了函数addslashes函数.这样一来在出库的时候需要使用stripslashes函数过滤.所以这种情况就需要过滤数组.但这样一来效率是很慢的.因为就变成了遍历两遍相同的内容.解决办法是在smarty中的section里进行筛选.所以我用到了注册函数这个方法.

$smarty->register_function("date_now", "print_current_date");

function print_current_date ($params) {
extract($params);
if(empty($format))
$format="%b %e, %Y";
echo strftime($format,time());
}

让我们看看smarty是怎么处理的

我们定义了一个函数名叫print_current_date,并且把它注册为date_now。
{date_now format=”%Y/%m/%d”} 其中format是参数(这个名字决定你在注册函数中引用的参数的名字).在函数中extract($params);是必须的~实参的名字可以任意定义。其实smarty传过来的是一个数组,你需要用extract一下.这时在使用这个值.
这样我们就注册了一个smarty函数
那如果传递两个以上的参数呢?
其实也很简单{date_now arg1=”1″ arg2=”2″ arg3=”3″}
smarty把它们都分装成数组
print_r($params);
Array ( [arg1] => 1 [arg2] => 2 [arg3] => 3 )
就是这么简单~ just easy just use~ this is smarty~
更多信息请访问




爱老婆 爱狮子 爱生活
2006-8-28 12:51 PM#1
查看资料  发短消息  顶部
 
刀鱼
版主
Rank: 7Rank: 7Rank: 7
好好做人,认真做事


UID 67208
精华 0
积分 677
帖子 823
金钱 677 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-12-15
来自 北京
状态 离线
[广告]: 代充Paypal帐号美元
"smarty传过来的是一个数组,你需要用extract一下.这时在使用这个值."

个人觉得这句话有问题,没用过这个东西,上面的的内容也没看太懂,高手能否举个小例子说下...谢谢




有项目需求,请联系:daoyu_06@126.com.
2006-8-28 01:03 PM#2
查看资料  Blog  发短消息  QQ  顶部
 
webboy
金牌会员
Rank: 6Rank: 6
老会员


UID 64695
精华 0
积分 1077
帖子 828
金钱 1077 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2005-6-11
来自 北京
状态 离线
[推荐阅读] 怎么从smarty输出到流?


QUOTE:
原帖由 刀鱼 于 2006-8-28 01:03 PM 发表
"smarty传过来的是一个数组,你需要用extract一下.这时在使用这个值."

个人觉得这句话有问题,没用过这个东西,上面的的内容也没看太懂,高手能否举个小例子说下...谢谢


$smarty->register_function("date_now", "print_current_date");
function print_current_date ($params) {
    extract($params);
    if(empty($format))
        $format="%b %e, %Y";
    echo strftime($format,time());
}

/*
extract --  从数组中将变量导入到当前的符号表 
说明
int extract ( array var_array [, int extract_type [, string prefix]])


本函数用来将变量从数组中导入到当前的符号表中。接受结合数组 var_array 作为参数并将键名当作变量名,值作为变量的值。对每个键/值对都会在当前的符号表中建立变量,并受到 extract_type 和 prefix 参数的影响。 

* 假定 $var_array 是 wddx_deserialize 返回的数组*/

$size = "large";
$var_array = array ("color" => "blue",
                    "size"  => "medium",
                    "shape" => "sphere");
extract ($var_array, EXTR_PREFIX_SAME, "wddx");

print "$color, $size, $shape, $wddx_sizen";


例子 1. extract() 例子

<?php

/* 假定 $var_array 是 wddx_deserialize 返回的数组*/

$size "large";
$var_array = array ("color" => "blue",
                    
"size"  => "medium",
                    
"shape" => "sphere");
extract ($var_arrayEXTR_PREFIX_SAME"wddx");

print 
"$color, $size, $shape, $wddx_sizen";

?>  

以上例子将产生: 

blue, large, sphere, medium
 
 


*/




爱老婆 爱狮子 爱生活
2006-8-28 03:05 PM#3
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024738 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP