zoukankan      html  css  js  c++  java
  • thinkphp 中的钩子应用

    1 创建钩子行为:

    我们自己定义的标签位可以直接放在ThinkBehaviors中,也可以放在应用目录中,比如说Home模块下,新建一个Behaviors的文件夹,在文件夹内新建 

    标签名+Behavior.class.PHP 

    注:需要带Behavior的原因,见代码:

    static public function exec($name, $tag,&$params=NULL) {
            if('Behavior' == substr($name,-8) ){
                // 行为扩展必须用run入口方法
                $tag    =   'run';
            }
            $addon   = new $name();
            return $addon->$tag($params);
        }

    在这里我自己自定义的标签名是My

    namespace Behavior;
    
    use ThinkBehavior;
    
    class MyBehavior extends Behavior
    {
        public function run(&$arg){
            echo 'Thinkphp 中的'.$arg['name'].'功能,'.$arg['value'].'中...';
        }
    }

    注意类名大小写

    2 将钩子添加进钩子集中

    方法一(手动注册):直接在控制器中添加  Hook::add('addd','Behavior\adBehavior');  

    方法二(自动注册):

    在Conf文件夹里面(完整路径D: hinkapplicationHomeConf ags.php,当然这是我的情况)tags.php的内容:

    return array(
    //'action_begin'=>array('Home\Behaviors\test','Home\Behaviors\test'),
      //一个标签位可以有多个行为,使用数组即可。
      // 如果是3.2.1版本 则需要改成
      // 'action_begin'=>array('Home\Behaviors\testBehavior','Home\Behaviors\testBehavior'),
      'my'=>array('Behaviors\MyBehavior')
    );

    3 添加监听:(我这里才用模板中直接监听使用)

    此处如果报找不到hook方法,请在ThinkPHP/Common/functions.php中添加(当然也可以在其他公共文件):

    function hook($hook,$params= array()){
        ThinkHook::listen($hook,$params);
    }

    最后在模板中使用:

    {:hook('my', array('name'=>'钩子','value'=>'学习'))}

    参考网址如下:

    http://blog.csdn.net/laughing2333/article/details/48683671

    http://www.jb51.net/article/97081.htm

    http://blog.csdn.net/nebs1992fmx/article/details/43819137

    http://www.thinkphp.cn/topic/21323.html

  • 相关阅读:
    Android Service 与 Activity使用Pending Intent通信
    Android四大组件之Service(一)
    Android中的进程和线程
    Java虚拟机结构(二)
    Java虚拟机结构(一)
    Android四大组件之Activity(一)
    一阶规则学习
    规则学习
    算法链接
    41. First Missing Positive
  • 原文地址:https://www.cnblogs.com/sien6/p/7099418.html
Copyright © 2011-2022 走看看