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 协议》,转载必须注明作者和本文链接
垃圾 java 早就有了这这功能了
java厉害 别他妈在php社区混啊