溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP類文件的自動加載器用法介紹

發(fā)布時間:2021-09-13 18:15:08 來源:億速云 閱讀:186 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“PHP類文件的自動加載器用法介紹”,在日常操作中,相信很多人在PHP類文件的自動加載器用法介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP類文件的自動加載器用法介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1. 類文件的自動加載器

1. 我們的項目目錄下,所有的服務端代碼都引入了一個共同的文件那就是init.php

PHP類文件的自動加載器用法介紹

2. 在這個文件中,我們加載了倆個配置文件,我們先看global.inc.php

在這個文件里邊有一個類文件自動加載器

PHP類文件的自動加載器用法介紹

3. spl_autoload_register() 作為 __autoload() 函數(shù)的替代,返回true

PHP類文件的自動加載器用法介紹

4 . 過程詳解

PHP類文件的自動加載器用法介紹

我們可以打印一下$class_name

PHP類文件的自動加載器用法介紹

由于我們項目是在linux上存放,linux上是不能反斜杠的,所以需要在把斜杠轉為正斜杠

PHP類文件的自動加載器用法介紹

PHP類文件的自動加載器用法介紹

然后拼接路徑并判斷文件是否存在

PHP類文件的自動加載器用法介紹

然后在類外調用一下即可

PHP類文件的自動加載器用法介紹

2. 解釋文件類加載器

如果一個類在多個腳本中都需要使用,可以將一個類的定義代碼,單獨的封裝到一個文件中,這種文件也叫作類文件,在需要的時候,將整個文件載入進來即可!

PHP在執(zhí)行的時候,如果發(fā)現(xiàn)需要一個類(只要是和這個類相關的任何的操作),但此時當前腳本又沒有這個類的定義代碼,也沒有手動加載這個類文件,那么,PHP會自動的調用一個名字叫作__autoload($class_name)函數(shù),調用的時候,會給該函數(shù)傳遞一個參數(shù),該參數(shù)就是當前所需要的類的類名!

3. 檢驗

我們在list文件里邊隨便寫一個模型實例

PHP類文件的自動加載器用法介紹

然后打印就可以看到class_name

但我們沒有這個文件,所以會報出file not exists 

PHP類文件的自動加載器用法介紹

3. 源碼

//自定義類自動加載路徑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>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

php
AI