|
自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ī)制給取消了…… 主站蜘蛛池模板: 国产爱豆果冻传媒在线观看 | 国产亚洲精品在线视频 | 青青久在线 | 免费看男人J放进女人J无遮掩 | 98色精品视频在线 | 亚洲精品视频在线观看免费 | 久久婷婷久久一区二区三区 | 羞羞麻豆国产精品1区2区3区 | 久久国产精品无码视欧美 | 河南老太XXXXXHD | 欧洲美女人 一级毛片 | 哪灬你的鸣巴好大 | 亚洲欧洲精品成人久久曰影片 | yy8090韩国理伦片在线 | 久久视频精品3线视频在线观看 | 美女gif趴跪式动态图 | 久久人妻无码毛片A片麻豆 久久人妻熟女中文字幕AV蜜芽 | 波多野结衣网站www 波多野结衣教师系列6 | 香蕉eeww99国产精选播放 | WWWXXXX兽交| 好妞操 | 特黄特黄aaaa级毛片免费看 | 成人国产三级在线播放 | 伊人大香线蕉影院在线播放 | 久久天天躁狠狠躁夜夜呲 | 国产电影无码午夜在线播放 | 久久AV亚洲精品一区无码网 | 欧美精品九九99久久在观看 | 中字幕视频在线永久在线 | youjizz护士| 黄小说免费看 | 国产成人精品综合久久久 | 国产深夜福利视频在线 | av天堂电影网在线观看 | 免费看毛片网 | 浪货嗯啊趴下NP粗口黄暴 | 男人私gay挠脚心vk视频 | 成年人视频在线免费播放 | xx69中国| 精品国产影院 | 国产精品私人玩物在线观看 |