2012-05-23 36 views
2

我想自動加載不同文件夾中的類。那可能嗎?如何將__autoload用於不同的文件夾?

 function __autoload($class){ 
      require $class.'.php'; 
      require 'libs/'.$class.'.php'; 
      //this won't work. 
     } 

我想自動加載libs文件夾或根目錄下的類。有什麼想法嗎?非常感謝。

+1

檢查'file_exists()'第一? – jprofitt

回答

3

首先,我建議你看看spl_autoload_register,這樣做比較好。

其次,您應該使用is_file來測試文件是否存在,然後嘗試加載它。如果您require文件不存在,您的腳本將停止。

spl_autoload_register(function($class) { 
    if (is_file($class . '.php')) { 
     require $class . '.php'; 
    } elseif (is_file('libs/' . $class . '.php')) { 
     require 'libs/' . $class . '.php'; 
    } 
}); 

如果有多個文件夾,該文件可能是,你可以做這樣的事情:

spl_autoload_register(function($class) { 
    $folders = array ('.', 'libs', 'somewhere'); 

    foreach ($folders as $folder) { 
     if (is_file($folder . '/' . $class . '.php')) { 
      require $folder . '/' . $class . '.php'; 
     } 
     if (class_exists($class)) break; 
    } 
}); 
相關問題