一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP的autoload自動加載機制使用說明

php開發過程中,如果希望從外部引入一個class,通常會使用include和require方法,去把定義這個class的文件包含進來,但是這樣可能會使得在引用文件的新腳本中,存在大量的include或require方法調用,如果一時疏忽遺漏則會產生錯誤,使得代碼難以維護。

php5后,引入了__autoload這個攔截器方法,可以自動對class文件進行包含引用,通常我們會這么寫:
復制代碼 代碼如下:
function __autoload($className) {
include_once $className . '.class.php';
}

$user = new User();

php引擎試圖實例化一個未知類的操作時,會調用__autoload()方法,在php出錯失敗前有了最后一個機會加載所需的類。因此,上面的這段代碼執行時,php引擎實際上替我們自動執行了一次__autoload方法,將User.class.php這個文件包含進來。

在__autoload函數中拋出的異常不能被catch語句塊捕獲并導致致命錯誤。

如果使用 php的CLI交互模式時,自動加載機制將不會執行。

當你希望使用PEAR風格的命名規則,例如需要引入User/Register.php文件,也可以這么實現:
復制代碼 代碼如下:
//加載我
function __autoload($className) {
$file = str_replace('_', DIRECTORY_SEPARATOR, $className);
include_once $file . 'php';
}
$userRegister = new User_Register();


這種方法雖然方便,但是在一個大型應用中如果引入多個類庫的時候,可能會因為不同類庫的autoload機制而產生一些莫名其妙的問題。在php5引入SPL標準庫后,我們又多了一種新的解決方案,spl_autoload_register()函數。

此函數的功能就是把函數注冊至SPL的__autoload函數棧中,并移除系統默認的__autoload()函數。一旦調用spl_autoload_register()函數,當調用未定義類時,系統會按順序調用注冊到spl_autoload_register()函數的所有函數,而不是自動調用__autoload()函數,下例調用的是User/Register.php而不是User_Register.class.php
復制代碼 代碼如下:
//不加載我
function __autoload($className) {
include_once $className . '.class.php';
}
//加載我
function autoload($className) {
$file = str_replace('/', DIRECTORY_SEPARATOR, $className);
include_once $file . '.php';
}
//開始加載
spl_autoload_register('autoload');
$userRegister = new User_Register();


在使用spl_autoload_register()的時候,我們還可以考慮采用一種更安全的初始化調用方法,參考如下:
復制代碼 代碼如下:
//系統默認__autoload函數
function __autoload($className) {
include_once $className . '.class.php';
}
//可供SPL加載的__autoload函數
function autoload($className) {
$file = str_replace('_', DIRECTORY_SEPARATOR, $className);
include_once $file . '.php';
}
//不小心加載錯了函數名,同時又把默認__autoload機制給取消了…… 主站蜘蛛池模板: 国产成人亚洲精品乱码在线观看 | 天天色色网| 亚洲人精品 | 91九色在线观看 | 国产成人精品一区二区不卡 | 国产在线视频h | 国产真实伦正在播放 | 日本高清不卡二区 | 成人午夜在线视频 | 色婷婷综合久久久中文字幕 | 欧美日韩另类在线观看视频 | 91av麻豆| 日本久久免费大片 | 国产综合在线观看 | 国产成人亚洲欧美激情 | 四虎影免看黄 | 国语对白免费观看网址 | 亚洲三级色 | 国产免费精彩视频 | 在线视频天堂 | 香蕉视频成人在线观看 | 香蕉久久影院 | 亚洲小说图片视频 | 久久亭亭 | 久久久久久九九 | 日本一区二区三区免费观看 | 精品国产成人a区在线观看 精品国产成人a在线观看 | 丁香视频在线 | 成人在线免费小视频 | 婷婷成人基地 | 精品日韩二区三区精品视频 | 色狠狠狠狠综合影视 | 国产精品嫩草影院免费看 | 婷婷激情视频 | 国产精品九九免费视频 | 中文字幕日韩三级 | 久久精品国产乱子伦多人 | 婷婷激情片 | 精品日韩一区 | 色哟哟在线观看精品大全视频 | 日韩一区二区三区免费视频 |