2013年8月29日 星期四

使用 autoload 自動載入 class

當 class 寫在外部檔案,使用時,要先將檔案 include,
不想手動 include 檔案,可使用 autoload,
讓程式在使用時,依照所寫的規則,自動找尋是否有該檔案可以載入。

以前在 PHP 5.2.17,我是這樣寫

define('INCLUDE_DIR', dirname(__FILE__));
function __autoload($class_name) {
    require_once INCLUDE_DIR . "/models/{$class_name}.php";
}

結果在 PHP 5.4.12 卻不能用,後來在 PHP 官網看到 __autoload 可能要被棄用,官網建議改用 spl_autoload_register
於是嘗試改用 spl_autoload_register 後就可以了。但我是沒在官網找到 PHP 5.4.12 不能用 __autoload 寫法的資料。
define('INCLUDE_DIR', dirname(__FILE__));
spl_autoload_register(function ($class_name) {
    require_once INCLUDE_DIR . "/models/{$class_name}.php";
});


參考
http://www.php.net/manual/en/language.oop5.autoload.php
http://www.php.net/manual/en/function.spl-autoload-register.php

沒有留言:

張貼留言