php标签扩展,Thinkphp处理标签扩展+动态添加行为扩展到某个标签

最近因为用thinkphp进行底层开发,做一个企业官网,方柱扣 所以用到这个函数,所以在此分享。

/**

* 处理标签扩展

* @param string $tag 标签名称

* @param mixed $params 传入参数

* @return mixed

*/

function tag($tag, &$params=NULL) {

// 系统标签扩展

$extends = C('extends.' . $tag);

// 应用标签扩展

$tags = C('tags.' . $tag);

if (!empty($tags)) {

if(empty($tags['_overlay']) && !empty($extends)) { // 合并扩展

$tags = array_unique(array_merge($extends,$tags));

}elseif(isset($tags['_overlay'])){ // 通过设置 '_overlay'=>1 覆盖系统标签

unset($tags['_overlay']);

}

}elseif(!empty($extends)) {

$tags = $extends;

}

if($tags) {

if(APP_DEBUG) {

G($tag.'Start');

trace('[ '.$tag.' ] --START--','','INFO');

}

// 执行扩展

foreach ($tags as $key=>$name) {

if(!is_int($key)) { // 指定行为类的完整路径 用于模式扩展

$name = $key;

}

B($name, $params);

}

if(APP_DEBUG) { // 记录行为的执行日志

trace('[ '.$tag.' ] --END-- [ RunTime:'.G($tag.'Start',$tag.'End',6).'s ]','','INFO');

}

}else{ // 未执行任何行为 返回false

return false;

}

}

/**

* 动态添加行为扩展到某个标签

* @param string $tag 标签名称

* @param string $behavior 行为名称

* @param string $path 行为路径

* @return void

*/

function add_tag_behavior($tag,$behavior,$path='') {

$array = C('tags.'.$tag);

if(!$array) {

$array = array();

}

if($path) {

$array[$behavior] = $path;

}else{

$array[] = $behavior;

}

C('tags.'.$tag,$array);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值