本文實(shí)例講述了PHP類的自動(dòng)加載機(jī)制實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
Test1.class.php
<?phpclass Test1{ public static function test() { echo "hello,world!/n"; }}Test2.class.php
<?phpclass Test2{ public static function test() { echo "你好,世界!/n"; }}test.php
<?phpTest1::test();
如果直接寫,會(huì)報(bào)錯(cuò)
Fatal error: Class 'Test1' not found in /home/wwwroot/default/codelabs/test.php on line 3
需要引入文件
<?phprequire "Test1.class.php";Test1::test();
這樣就可以訪問(wèn)了。
但是,如果類越來(lái)越多,引入的代碼就越來(lái)越多。
這個(gè)時(shí)候需要使用__autoload方法。
<?phpTest1::test();function __autoload($class) { //require "Test1.class.php"; //require "Test2.class.php"; require __DIR__."/".$class.".class.php"; // __DIR__是當(dāng)前目錄的絕對(duì)路徑}當(dāng)程序發(fā)現(xiàn)沒(méi)有引入類時(shí),會(huì)自動(dòng)調(diào)用這個(gè)方法,引入類文件。
進(jìn)一步優(yōu)化升級(jí),
支持多個(gè)自動(dòng)加載。
<?phpspl_autoload_register('__autoload1');spl_autoload_register('__autoload2');Test1::test();Test2::test();// 當(dāng)檢測(cè)到無(wú)類加載時(shí),會(huì)自動(dòng)調(diào)用這個(gè)方法function __autoload1($class) { //require "Test1.class.php"; //require "Test2.class.php"; require __DIR__."/".$class.".class.php"; // __DIR__是當(dāng)前目錄的絕對(duì)路徑}function __autoload2($class) { //require "Test1.class.php"; //require "Test2.class.php"; require __DIR__."/".$class.".class.php"; // __DIR__是當(dāng)前目錄的絕對(duì)路徑}很好,很強(qiáng)大!
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選