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 协议》,转载必须注明作者和本文链接
VeryCool
讨论数量: 2

垃圾 java 早就有了这这功能了

2年前 评论
VeryCool (楼主) 2年前

java厉害 别他妈在php社区混啊

2年前 评论
VeryCool (楼主) 2年前
薄荷蓝的晴天 (作者) 2年前
VeryCool (楼主) 2年前

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