天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP的autoload自動(dòng)加載機(jī)制使用說(shuō)明

php開(kāi)發(fā)過(guò)程中,如果希望從外部引入一個(gè)class,通常會(huì)使用include和require方法,去把定義這個(gè)class的文件包含進(jìn)來(lái),但是這樣可能會(huì)使得在引用文件的新腳本中,存在大量的include或require方法調(diào)用,如果一時(shí)疏忽遺漏則會(huì)產(chǎn)生錯(cuò)誤,使得代碼難以維護(hù)。

php5后,引入了__autoload這個(gè)攔截器方法,可以自動(dòng)對(duì)class文件進(jìn)行包含引用,通常我們會(huì)這么寫(xiě):
復(fù)制代碼 代碼如下:
function __autoload($className) {
include_once $className . '.class.php';
}

$user = new User();

當(dāng)php引擎試圖實(shí)例化一個(gè)未知類的操作時(shí),會(huì)調(diào)用__autoload()方法,在php出錯(cuò)失敗前有了最后一個(gè)機(jī)會(huì)加載所需的類。因此,上面的這段代碼執(zhí)行時(shí),php引擎實(shí)際上替我們自動(dòng)執(zhí)行了一次__autoload方法,將User.class.php這個(gè)文件包含進(jìn)來(lái)。

在__autoload函數(shù)中拋出的異常不能被catch語(yǔ)句塊捕獲并導(dǎo)致致命錯(cuò)誤。

如果使用 php的CLI交互模式時(shí),自動(dòng)加載機(jī)制將不會(huì)執(zhí)行。

當(dāng)你希望使用PEAR風(fēng)格的命名規(guī)則,例如需要引入U(xiǎn)ser/Register.php文件,也可以這么實(shí)現(xiàn):
復(fù)制代碼 代碼如下:
//加載我
function __autoload($className) {
$file = str_replace('_', DIRECTORY_SEPARATOR, $className);
include_once $file . 'php';
}
$userRegister = new User_Register();


這種方法雖然方便,但是在一個(gè)大型應(yīng)用中如果引入多個(gè)類庫(kù)的時(shí)候,可能會(huì)因?yàn)椴煌悗?kù)的autoload機(jī)制而產(chǎn)生一些莫名其妙的問(wèn)題。在php5引入SPL標(biāo)準(zhǔn)庫(kù)后,我們又多了一種新的解決方案,spl_autoload_register()函數(shù)。

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


在使用spl_autoload_register()的時(shí)候,我們還可以考慮采用一種更安全的初始化調(diào)用方法,參考如下:
復(fù)制代碼 代碼如下:
//系統(tǒng)默認(rèn)__autoload函數(shù)
function __autoload($className) {
include_once $className . '.class.php';
}
//可供SPL加載的__autoload函數(shù)
function autoload($className) {
$file = str_replace('_', DIRECTORY_SEPARATOR, $className);
include_once $file . '.php';
}
//不小心加載錯(cuò)了函數(shù)名,同時(shí)又把默認(rèn)__autoload機(jī)制給取消了…… 主站蜘蛛池模板: 解开美女胸衣2破解版 | 无人区乱码区1卡2卡三卡在线 | 黄梅戏mp3大全 | YY8848高清私人影院 | 美国CERANETWORK超清 | 亚洲精品久久区二区三区蜜桃臀 | 人妻体内射精一区二区 | 桥本有菜护士 | 色欲AV人妻精品麻豆AV | 狠狠色狠狠色综合曰曰 | 亚洲 在线 日韩 欧美 | 国产精品99久久久久久AV | 中文字幕人成乱码熟女APP | 羲义嫁密着中出交尾gvg794 | 幸福草电视剧演员表介绍 | 日本亚洲中文字幕无码区 | 狠狠干女人 | 男女生爽爽爽视频免费观看 | 日美欧韩一区二去三区 | 国产美女久久久久久久久久久 | 久久久无码精品亚洲A片猫咪 | 国产精品青青草原app大全 | 美女脱了内裤张开腿让男人桶到爽 | 亚洲欧洲免费三级网站 | 国色精品VA在线观看免费视频 | 四虎国产精品永久免费入口 | 男生脱美女内裤内衣动态图 | 他揉捏她两乳不停呻吟口述 | 亚洲春色AV无码专区456 | 野花视频在线观看免费最新动漫 | 亚洲午夜精品久久久久久抢 | 花蝴蝶免费观看影视 | 青青草久久 | 亚洲精品乱码8久久久久久日本 | 一区二区三区四区国产 | 精品久久久久中文字幕日本 | 给我免费播放片bd国语 | 在线a视频 | 久久综合电影 | 久久精品热在线观看30 | 欧美AAAAAA级午夜福利视频 |