PHP類(lèi)的自動(dòng)加載機(jī)制實(shí)現(xiàn)方法分析
本文實(shí)例講述了PHP類(lèi)的自動(dòng)加載機(jī)制實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
Test1.class.php
<?php class Test1 { public static function test() { echo "hello,world!\n"; } }
Test2.class.php
<?php class Test2 { public static function test() { echo "你好,世界!\n"; } }
test.php
<?php Test1::test();
如果直接寫(xiě),會(huì)報(bào)錯(cuò)
Fatal error: Class 'Test1' not found in /home/wwwroot/default/codelabs/test.php on line 3
需要引入文件
<?php require "Test1.class.php"; Test1::test();
這樣就可以訪(fǎng)問(wèn)了。
但是,如果類(lèi)越來(lái)越多,引入的代碼就越來(lái)越多。
這個(gè)時(shí)候需要使用__autoload
方法。
<?php Test1::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)有引入類(lèi)時(shí),會(huì)自動(dòng)調(diào)用這個(gè)方法,引入類(lèi)文件。
進(jìn)一步優(yōu)化升級(jí),
支持多個(gè)自動(dòng)加載。
<?php spl_autoload_register('__autoload1'); spl_autoload_register('__autoload2'); Test1::test(); Test2::test(); // 當(dāng)檢測(cè)到無(wú)類(lèi)加載時(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)大!
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
分享php代碼將360瀏覽器導(dǎo)出的favdb的sqlite數(shù)據(jù)庫(kù)文件轉(zhuǎn)換為html
這篇文章主要介紹了分享php代碼將360瀏覽器導(dǎo)出的favdb的sqlite數(shù)據(jù)庫(kù)文件轉(zhuǎn)換為html,需要的朋友可以參考下2015-12-12PHP后臺(tái)實(shí)現(xiàn)微信小程序登錄
這篇文章主要為大家詳細(xì)介紹了PHP后臺(tái)實(shí)現(xiàn)微信小程序登錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08CI框架(CodeIgniter)實(shí)現(xiàn)的數(shù)據(jù)庫(kù)增刪改查操作總結(jié)
這篇文章主要介紹了CI框架(CodeIgniter)實(shí)現(xiàn)的數(shù)據(jù)庫(kù)增刪改查操作,結(jié)合實(shí)例形式總結(jié)分析了CI框架針對(duì)mysql數(shù)據(jù)庫(kù)增刪改查操作的模型、控制器及視圖相關(guān)定義與使用技巧,需要的朋友可以參考下2018-05-05Laravel框架學(xué)習(xí)筆記(一)環(huán)境搭建
本文主要是把自己學(xué)習(xí)Laravel框架中的經(jīng)驗(yàn)寫(xiě)下來(lái)。這是本系列的第一篇,工欲善其事必先利其器,先把環(huán)境搭建好吧,之前也沒(méi)寫(xiě)過(guò)什么文章,可能文章結(jié)構(gòu)比較混亂,想到那寫(xiě)到哪。2014-10-10php中的explode()函數(shù)實(shí)例介紹
在本篇文章里小編給大家分享了關(guān)于php中的explode()函數(shù)實(shí)例知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-01-01thinkphp5框架實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀取的數(shù)據(jù)轉(zhuǎn)換成json格式示例
這篇文章主要介紹了thinkphp5框架實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀取的數(shù)據(jù)轉(zhuǎn)換成json格式,涉及thinkPHP5數(shù)據(jù)庫(kù)讀取數(shù)據(jù)與json格式轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2019-10-10thinkphp5.1的model模型自動(dòng)更新update_time字段實(shí)例講解
這篇文章主要介紹了thinkphp5.1的model模型自動(dòng)更新update_time字段實(shí)例講解,文章代碼示例比較簡(jiǎn)單實(shí)用,有正在學(xué)習(xí)tp的同學(xué)可以跟著小編好好閱讀下2021-03-03thinkPHP框架實(shí)現(xiàn)生成條形碼的方法示例
這篇文章主要介紹了thinkPHP框架實(shí)現(xiàn)生成條形碼的方法,結(jié)合實(shí)例形式分析了thinkPHP結(jié)合第三方barcode類(lèi)文件生成條形碼的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06