php中有兩種自動加載機制函數 [php] __autoload(); spl_autoload_register(); 1. __autoload() 可以將需要使用類的時候把文件加載到程序中 [php] <?php function __autoload($className) { if (file_exists($className . '.php')) { include $className . '.php';//可細化 } else { echo $className . '.php is not exists.'; exit; } } $indexController = new IndexController(); 在程序的運行過程中,php會檢測這個$className類是否已經加載,如果沒有加載會去執行__autoload(),再去加載$className這個類。在實例化類的對象、訪問類中的靜態變量和方法等都會去檢測類是否已經加載,是否有定義__autoload()函數,如果都沒有就會報錯。 在復雜點的系統中,用__autoload()來實現類的自動加載可能會很復雜。 2. spl_autoload_register() [php] <?php spl_autoload_register(); $index = new Index(); spl_autoload_register()函數中沒有參數,則會自動默認實現void spl_autoload ( string $class_name [,string $file_extensions ] )函數,默認支持.php和.ini [php] function load1($className) { //include } function load2($className) { //include } spl_autoload_register('load1');//注冊到<span class="methodname">spl_autoload_functions</span> spl_autoload_register('load2'); $index = new Index(); 會先通過load1去加載類,如果load1中沒有,再通過load2去加載,如果還有以次類推。 實現一個自動加載方法比較多,這舉例一個 [php] <?php class autoloader { public static $loader; public static function init() { if (self::$loader == NULL) self::$loader = new self(); return self::$loader; } public function __construct() { spl_autoload_register(array($this,'model')); spl_autoload_register(array($this,'helper')); spl_autoload_register(array($this,'controller')); spl_autoload_register(array($this,'library')); } public function library($class) { set_include_path(get_include_path().PATH_SEPARATOR.'/lib/'); spl_autoload_extensions('.library.php'); spl_autoload($class); } public function controller($class) { $class = preg_replace('/_controller$/ui','',$class); set_include_path(get_include_path().PATH_SEPARATOR.'/controller/'); spl_autoload_extensions('.controller.php'); spl_autoload($class); } public function model($class) { $class = preg_replace('/_model$/ui','',$class); set_include_path(get_include_path().PATH_SEPARATOR.'/model/'); spl_autoload_extensions('.model.php'); spl_autoload($class); } public function helper($class) { $class = preg_replace('/_helper$/ui','',$class); set_include_path(get_include_path().PATH_SEPARATOR.'/helper/'); spl_autoload_extensions('.helper.php'); spl_autoload($class); } } //call autoloader::init(); ?> 也可以根據自己的需要來設計實現