欢迎阅读「 简单的插件钩子系统 」

简单的插件钩子系统

网站技术 ayflying 3436℃ 评论

下面有注释了,直接贴代码吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
 * 插件钩子类
 * ay@7cuu.com
 * 2018-11-24
 *
钩子使用方法
//引用命名空间
use Ay\auto\Hook;
//添加钩子
Hook::add('ceshi',function(){
    echo '挂载点1
';
});
//运行钩子
Hook::listen('ceshi');
 
*/
namespace Ay\Auto; // 命名空间
 
// 插件类
class Hook{
    /**
     * Hook初始化
     */
    function __construct()
    {
        $dir = __DIR__ . "/plugin/";
        // 获取全部插件
        if(!is_dir($dir)){
            $pluginList = [];
        }else{
            $pluginList=scandir($dir);
        }
        foreach ($pluginList as $k => $v) {
            if ($v=='.' || $v=='..') {
                unset($pluginList[$k]);
            }
            $pluginList[$k] = $dir.$v;
        }
        //print_r($pluginList);
        foreach($pluginList as $val){
            if(!is_file($val."/config.php")) break;
            $config include $val."/config.php";
            if($config['status'] == 0) break;
            is_file($val."/add.php") && include_once $val "/add.php";
        }
    }
 
    /**
     *  注册添加插件
     * @param $name 钩子名称
     * @param $func 钩子使用的方法
     */
    public static function add($name,$func){
        $GLOBALS['hookList'][$name][]=$func;
    }
 
    /**
     * 监听插件
     * @param $name 钩子名称
     * @param null $params 钩子方法参数
     * @return mixed|void
     */
    public static function listen($name,$params=null){
        if(empty($GLOBALS['hookList'][$name])) {
            //钩子为空
            return;
        }
        foreach ($GLOBALS['hookList'][$nameas $k => $v){
            return call_user_func($v,$params);
        }
    }
 
    /**
     * listen的别名方法
     * @param $name
     * @param null $params
     * @return mixed|void
     */
    public static function run($name,$params=null){
        return self::listen($name,$params);
    }
 
}


转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » 简单的插件钩子系统

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论

高效,专业,悠悠博客

联系我们