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 协议》,转载必须注明作者和本文链接