您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP類文件的自動加載器用法介紹”,在日常操作中,相信很多人在PHP類文件的自動加載器用法介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP類文件的自動加載器用法介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1. 我們的項目目錄下,所有的服務端代碼都引入了一個共同的文件那就是init.php
2. 在這個文件中,我們加載了倆個配置文件,我們先看global.inc.php
在這個文件里邊有一個類文件自動加載器
3. spl_autoload_register() 作為 __autoload() 函數(shù)的替代,返回true
4 . 過程詳解
我們可以打印一下$class_name
由于我們項目是在linux上存放,linux上是不能反斜杠的,所以需要在把斜杠轉為正斜杠
然后拼接路徑并判斷文件是否存在
然后在類外調用一下即可
如果一個類在多個腳本中都需要使用,可以將一個類的定義代碼,單獨的封裝到一個文件中,這種文件也叫作類文件,在需要的時候,將整個文件載入進來即可!
PHP在執(zhí)行的時候,如果發(fā)現(xiàn)需要一個類(只要是和這個類相關的任何的操作),但此時當前腳本又沒有這個類的定義代碼,也沒有手動加載這個類文件,那么,PHP會自動的調用一個名字叫作__autoload($class_name)函數(shù),調用的時候,會給該函數(shù)傳遞一個參數(shù),該參數(shù)就是當前所需要的類的類名!
我們在list文件里邊隨便寫一個模型實例
然后打印就可以看到class_name
但我們沒有這個文件,所以會報出file not exists
//自定義類自動加載路徑define('CUSTOM_CLASS_PATH', ROOT_PATH . '/class');define ('DIRECTORY_SEPARATOR', "/");/** * Class SYSCore * 類文件的自動加載器 */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)內部自定義的類域名空間 } 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 { # 報出警告信息 echo "file not exists class_path=$class_path\n<br/>"; } return false; }}SYSCore::registerAutoload();
到此,關于“PHP類文件的自動加載器用法介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。