zoukankan      html  css  js  c++  java
  • 钩子函数---tp

    地址:http://blog.csdn.net/fationyyk/article/details/51085987

    钩子一般可以理解为我们所说的插件。
    在模板中添加

    <div class="container-span">{:hook('AdminIndex')}</div>

    hook方法定义在function.PHP

    /**
     * 处理插件钩子
     * @param string $hook   钩子名称
     * @param mixed $params 传入参数
     * @return void
     */
    function hook($hook,$params=array()){
        ThinkHook::listen($hook,$params);
    }

    具体实现步骤

    1、添加tags.php配置
    在ApplicationCommonConf下新建tags.php文件,并加入映射关系

    <?php
    return array(
        'app_init'=>array('CommonBehaviorInitHookBehavior')
    );

    2、添加到映射数组
    实际上就是AdminIndex对应的实现类

    <?php
    
    namespace CommonBehavior;
    use ThinkBehavior;
    use ThinkHook;
    defined('THINK_PATH') or exit();
    
    // 初始化钩子信息
    class InitHookBehavior extends Behavior {
    
        // 行为扩展的执行入口必须是run
        public function run(&$content){
            if(defined('BIND_MODULE') && BIND_MODULE === 'Install') return;
    
            $data = S('hooks');
            if(!$data){
                $hooks = M('Hooks')->getField('name,addons');
                foreach ($hooks as $key => $value) {
                    if($value){
                        $map['status']  =   1;
                        $names          =   explode(',',$value);
                        $map['name']    =   array('IN',$names);
                        $data = M('Addons')->where($map)->getField('id,name');
                        if($data){
                            $addons = array_intersect($names, $data);
    //添加映射关系 这里的AdminIndex对应的是SiteStat,SystemInfo,DevTeam这三个插件,对应的实现分别在AddonsSiteStatSiteStatAddon; AddonsSystemInfoSystemInfoAddon; AddonsDevTeamDevTeamAddon
                            Hook::add($key,array_map('get_addon_class',$addons));
                        }
                    }
                }
                S('hooks',Hook::get());
            }else{
                Hook::import($data,false);
            }
        }
    }

    3、对应Addons的实现
    在项目根目录新建AddonsSiteStatSiteStatAddon.class.php,目录结构如下
    这里写图片描述

  • 相关阅读:
    Codeforces 451A Game With Sticks
    POJ 3624 Charm Bracelet
    POJ 2127 Greatest Common Increasing Subsequence
    POJ 1458 Common Subsequence
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1698
    HDU 1754
    POJ 1724
    POJ 1201
    CSUOJ 1256
  • 原文地址:https://www.cnblogs.com/sunyq/p/6078556.html
Copyright © 2011-2022 走看看