作者:Leon Atkinson 翻譯:Haohappy 當(dāng)你嘗試使用一個(gè)未定義的類(lèi)時(shí),PHP會(huì)報(bào)告一個(gè)致命錯(cuò)誤. 解決方法就是添加一個(gè)類(lèi),可以用include包含一個(gè)文件. 畢竟你知道要用到哪個(gè)類(lèi). 但是,PHP提供了類(lèi)的自動(dòng)加載功能, 這可以節(jié)省編程的時(shí)間. 當(dāng)你嘗試使用一個(gè)PHP沒(méi)有組織到的類(lèi), 它會(huì)尋找一個(gè)__autoload的全局函數(shù). 如果存在這個(gè)函數(shù),PHP會(huì)用一個(gè)參數(shù)來(lái)調(diào)用它,參數(shù)即類(lèi)的名稱(chēng).
例子6.15說(shuō)明了__autoload是如何使用的. 它假設(shè)當(dāng)前目錄下每個(gè)文件對(duì)應(yīng)一個(gè)類(lèi). 當(dāng)腳本嘗試來(lái)產(chǎn)生一個(gè)類(lèi)User的實(shí)例,PHP會(huì)執(zhí)行__autoload. 腳本假設(shè)class_User.php中定義有User類(lèi).. 不管調(diào)用時(shí)是大寫(xiě)還是小寫(xiě),PHP將返回名稱(chēng)的小寫(xiě).
Listing 6.15 Class autoloading
<?php //define autoload function function __autoload($class) { include("class_" . ucfirst($class) . ".php"); }
//use a class that must be autoloaded $u = new User; $u->name = "Leon"; $u->printName(); ?>
超越PHP(www.phpe.org) 及Haohappy特別授權(quán)藍(lán)色理想轉(zhuǎn)載本系列文章,謝絕其它媒體任何形式轉(zhuǎn)載。
出處:超越PHP
責(zé)任編輯:cjj
上一頁(yè) 第十一節(jié) 重載 [11] 下一頁(yè) 第十三節(jié) 對(duì)象串行化 [13]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|