PHP插件系统的实现(三):实现探测器

实现 detector的功能

class PluginManager{
    /**
      * 已经上班的员工/已经启用的插件:用来监听or监控
      * @access private
      * @var array
   */
    private $_staff = [];
    /**
      * 构造函数
      *  
      * @access public
      * @return void
     */
    public function __construct(){
        #探测器需要自动执所以放在构造函数中执行 只要new 了当前类 自动发现所有插件
        $this->detector();
    }

    public function detector(){
        //主要功能为将插件需要执行功能放入  $_staff
        $plugins  =  $this->get_active_plugins();

        if($plugins){
            foreach($plugins as $plugin){
                #这里将所有插件践行初始化
                #路径请自己注意
                if (@file_exists($plugin['path'])){
                    include_once($plugin['path']);
                    #此时设定 文件夹名称 文件名称 类名 是统一的 如果想设定不统一请自己在get_active_plugins()内进行实现
                    $class =  $plugin['name'];
                    if (class_exists($class)){
                        #初始化所有插件类
                        new  $class();
                    }
                }
            }
        }
    }

}

到这里还有一点小问题,那就是执行是执行了但是 $_staff 中依然是空的,执行的也只是执行了一个类 而不是使用钩子触发指定的方法
还是那句话,排版好难请看下一篇

本作品采用《CC 协议》,转载必须注明作者和本文链接
VeryCool
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!