PHP插件系统的实现(二):获取全部插件信息 
                                                    
                        
                    
                    
  
                    
                    获取插件信息 (感觉排版有点费劲一点一点更吧)
开始之前我们需要先扩充一下类的注册方法和执行方法,然后思考一下如何获取插件和如何触发.
 <?php 
class PluginManager{
    /**
      * 已经上班的员工/已经启用的插件:用来监听or监控
      * @access private
      * @var array
   */
    private $_staff = [];
    /**
      * 构造函数
      *  
      * @access public
      * @return void
     */
    public function __construct(){
    }
    public function detector(){
        //主要功能为将插件需要执行功能放入  $_staff
    }
    public function trigger(){
      //主要功能为 $_staff 中获取需要执行的功能进行执行
    }
}
我们的类的基础函数已经扩充,现在我们实现具体的方法detector意思为探索,探索第三方插件,我们假定插件目录在根目/plugin 文件夹中
    public function detector(){
    # 获取全部插件的名称和信息 我只是简单获取了路径和目录名.
    # 不满足可以在目录下建立 config.php 来设置一些参数. 比如说状态
    # 暂时没有区分插件是否是活跃的还是停止的
     $plugins = $this->get_active_plugins();
    }
    public function get_active_plugins(){
    # 既假定了插件在根目录的/plugin
    # 我们再次假定插件的入口和插件文件夹的名字是一样的
    # 既假定了插件在根目录的/plugin
    # 注意:这个执行文件我放在了根目录 以下路径请根据实际情况获取
    $plugin_dir_path = '.'.DIRECTORY_SEPARATOR.'plugin'.DIRECTORY_SEPARATOR;
    $plugin_dir_name_arr = scandir($plugin_dir_path);
    $plugins = array();
    foreach($plugin_dir_name_arr as $k=>$v){
      if($v=="." || $v==".."){continue;}
          if(is_dir($plugin_dir_path.$v)){
              $path = $plugin_dir_path.$v.DIRECTORY_SEPARATOR.$v.'.php';
              $plugins[] = ['name'=>$v,'path'=>$path];
          }
     }
          return $plugins;
    }
                        
                        本作品采用《CC 协议》,转载必须注明作者和本文链接
          
          
          
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: