PHP外掛系統的實現(三):實現探測器

VeryCool發表於2021-06-15

實現 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 協議》,轉載必須註明作者和本文連結

相關文章