成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Thinkphp源碼分析之類的自動加載-創(chuàng)新互聯(lián)

在核心類文件Think.class.php里,Think定義了autoload方法,并用spl_autoload_register注冊為自動加載的方法。下面來解說下該方法的原理。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鐵東免費(fèi)建站歡迎大家使用!

ThinkPHP的自動加載分三種情況:

1.map映射

Think類里定義了$_map屬性,用來保存用戶添加的類映射信息

方法addMap和getMap分別用于添加和獲取映射信息。如果$_map里存在$class的映射,則直接引入class,

// 檢查是否存在映射 if(isset(self::$_map[$class])) { include self::$_map[$class]; }

2.命名空間下的自動加載

首先判斷$class是否含有\(zhòng)\,用以區(qū)分命名空間自動加載和非命名空間加載。其結(jié)果無非獲取一:類的basename,二:類的dirname。然后拼接類的路徑

這里有系統(tǒng)的命名空間和用戶自定義的命名空間,系統(tǒng)命名空間會自動定位,dirname為LIB_PATH

$name = strstr($class, '\\', true); if(in_array($name,array('Think','Org','Behavior','Com','Vendor')) || is_dir(LIB_PATH.$name)){  // Library目錄下面的命名空間自動定位 $path = LIB_PATH; }

自定義命名空間以模塊為命名空間,dirname為模塊所在的上級目錄

// 檢測自定義命名空間 否則就以模塊為命名空間 $namespace = C('AUTOLOAD_NAMESPACE'); $path = isset($namespace[$name])? dirname($namespace[$name]).'/' : APP_PATH;

最后拼接類的路徑,引入類文件

$filename = $path . str_replace('\\', '/', $class) . EXT; if(is_file($filename)) { // Win環(huán)境下面嚴(yán)格區(qū)分大小寫 if (IS_WIN && false === strpos(str_replace('/', '\\', realpath($filename)), $class . EXT)){ return ; } include $filename;

3.不是用命名空間下的加載

這里分為自動加載的類庫層,TP默認(rèn)為Controller和Model下的類,這兩個(gè)目錄下的類文件會被自動加載

還有一個(gè)自定義的自動加載的路徑,通過import方法載入,import方法包含三個(gè)參數(shù):

@param string $class 類庫命名空間字符串@param string $baseUrl 起始路徑 @param string $ext 導(dǎo)入的文件擴(kuò)展名 function import($class, $baseUrl = '', $ext=EXT) {}

這個(gè)方法里包含了加載當(dāng)前模塊,公共模塊,第三方模塊和其他模塊下的類的引入。并進(jìn)行了緩存

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁名稱:Thinkphp源碼分析之類的自動加載-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://jinyejixie.com/article20/diosjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、用戶體驗(yàn)營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃動態(tài)網(wǎng)站、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
论坛| 海门市| 明光市| 嵊州市| 马鞍山市| 科技| 新河县| 留坝县| 松阳县| 隆昌县| 阳泉市| 巴东县| 嘉义县| 准格尔旗| 开远市| 旬阳县| 喜德县| 六盘水市| 宣武区| 隆尧县| 阆中市| 麻城市| 昌邑市| 河间市| 凤庆县| 武宁县| 宜春市| 陇西县| 宁津县| 萨嘎县| 天津市| 德州市| 安岳县| 清原| 光泽县| 剑川县| 涿州市| 兴安盟| 南江县| 咸阳市| 吐鲁番市|