PHP類文件的動態加載(靜態引入文件的坑)

在寫一個開源框架,忽然發現php在多進程時執行的邏輯出現異常,導致子進程無法執行信號處理函數。經過一系列debug,發現php文件的靜態引入造成了bug的發生,而使用動態加載類文件將會有效的解決這個bug,具體代碼如下:

<?php
define("TOP_AUTOLOADER_PATH", dirname(__FILE__));

class Autoloader{

    /**
     * 類庫自動加載,寫死路徑,確保不加載其他文件。
     * @param string $class 對象類名
     * @return void
     */
    public static function autoload($class) {

        $name = $class;
        if(false !== strpos($name,'\\')){
            $name = explode('\\',$class);
            $name = array_pop($name);
        }
        //這裏因工程目錄結構而定
        $filename = TOP_AUTOLOADER_PATH."/lib/".$name.".php";

        if(is_file($filename)) {
            include $filename;
            return;
        }

    }
}
spl_autoload_register('Autoloader::autoload');

至於原因暫時未明,先記錄一下這個坑。

發佈了67 篇原創文章 · 獲贊 31 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章