這篇文章主要介紹“PHP類文件的自動(dòng)加載器用法介紹”,在日常操作中,相信很多人在PHP類文件的自動(dòng)加載器用法介紹問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”PHP類文件的自動(dòng)加載器用法介紹”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
在鄂托克等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),鄂托克網(wǎng)站建設(shè)費(fèi)用合理。
1. 我們的項(xiàng)目目錄下,所有的服務(wù)端代碼都引入了一個(gè)共同的文件那就是init.php
2. 在這個(gè)文件中,我們加載了倆個(gè)配置文件,我們先看global.inc.php
在這個(gè)文件里邊有一個(gè)類文件自動(dòng)加載器
3. spl_autoload_register() 作為 __autoload() 函數(shù)的替代,返回true
4 . 過程詳解
我們可以打印一下$class_name
由于我們項(xiàng)目是在linux上存放,linux上是不能反斜杠的,所以需要在把斜杠轉(zhuǎn)為正斜杠
然后拼接路徑并判斷文件是否存在
然后在類外調(diào)用一下即可
如果一個(gè)類在多個(gè)腳本中都需要使用,可以將一個(gè)類的定義代碼,單獨(dú)的封裝到一個(gè)文件中,這種文件也叫作類文件,在需要的時(shí)候,將整個(gè)文件載入進(jìn)來即可!
PHP在執(zhí)行的時(shí)候,如果發(fā)現(xiàn)需要一個(gè)類(只要是和這個(gè)類相關(guān)的任何的操作),但此時(shí)當(dāng)前腳本又沒有這個(gè)類的定義代碼,也沒有手動(dòng)加載這個(gè)類文件,那么,PHP會(huì)自動(dòng)的調(diào)用一個(gè)名字叫作__autoload($class_name)函數(shù),調(diào)用的時(shí)候,會(huì)給該函數(shù)傳遞一個(gè)參數(shù),該參數(shù)就是當(dāng)前所需要的類的類名!
我們?cè)趌ist文件里邊隨便寫一個(gè)模型實(shí)例
然后打印就可以看到class_name
但我們沒有這個(gè)文件,所以會(huì)報(bào)出file not exists
//自定義類自動(dòng)加載路徑define('CUSTOM_CLASS_PATH', ROOT_PATH . '/class');define ('DIRECTORY_SEPARATOR', "/");/** * Class SYSCore * 類文件的自動(dòng)加載器 */class SYSCore { public static function registerAutoload($class = 'SYSCore') { spl_autoload_register(array($class, 'autoload')); } public static function unregisterAutoload($class) { spl_autoload_unregister(array($class, 'autoload')); } public static function my_callback($match){ return DIRECTORY_SEPARATOR. $match[0]; } public static function autoload($class_name) { if (strpos($class_name, 'common') === 0 || strpos($class_name, 'model') === 0 || strpos($class_name, 'MySQL') === 0 || strpos($class_name, 'Curl') === 0 || strpos($class_name, 'controller') === 0 ) { // 系統(tǒng)內(nèi)部自定義的類域名空間 } else { return true; } $class_name = str_replace('\\', '/', $class_name); $class_path = CUSTOM_CLASS_PATH . DIRECTORY_SEPARATOR . $class_name.'.php'; $class_path = str_replace('//', '/', $class_path); # 判斷文件是否存在 if(file_exists($class_path)) { # 如果存在則引入 return include_once($class_path); } else { # 報(bào)出警告信息 echo "file not exists class_path=$class_path\n
"; } return false; }}SYSCore::registerAutoload();
到此,關(guān)于“PHP類文件的自動(dòng)加載器用法介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!