開始之前我們需要先擴充一下類的註冊方法和執行方法,然後思考一下如何獲取外掛和如何觸發.
<?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 協議》,轉載必須註明作者和本文連結