具體分析thinkPHP5.0框架自動載入機制
這篇文章主要介紹了thinkPHP5.0框架自動載入機制,較為詳細的分析了thinkPHP5.0自動載入的概念、原理、用法與相關注意事項,需要的朋友可以參考下
本文實例講述了thinkPHP5.0框架自動載入機制。分享給大家供大家參考,具體如下:
概述
ThinkPHP5.0 真正實現了按需加載,所有類別庫採用自動載入機制,並且支援類別庫映射和composer類別庫的自動載入。
自動載入的實作由think\Loader類別庫完成,自動載入規格符合PHP的PSR-4。
自動載入
由於新版ThinkPHP完全採用了命名空間的特性,因此只需要給類別庫正確定義所在的命名空間,而命名空間的路徑與類別庫檔案的目錄一致,那麼就可以實作類別的自動載入。
類別庫的自動載入偵測順序如下:
1、類別庫對映偵測;
2、PSR-4自動載入偵測;
3、PSR-0自動載入檢測;
系統會依序偵測,一旦偵測生效的話,就會自動載入對應的類別庫檔案。
類別庫映射
遵循我們上面的命名空間定義規範的話,基本上可以完成類別庫的自動載入了,但是如果定義了較多的命名空間的話,效率會有所下降,所以,我們可以為常用的類別庫定義類別庫映射。命名類別庫對應相當於為類別檔案定義了一個別名,效率會比命名空間定位更有效率,例如:
Loader::addClassMap('think\Log',LIB_PATH.'think\Log.php'); Loader::addClassMap('org\util\Array',LIB_PATH.'org\util\Array.php');
也可以利用addClassMap方法批次匯入類別庫映射定義,例如:
$map = [ 'think\Log' => LIB_PATH.'think\Log.php', 'org\util\array'=> LIB_PATH.'org\util\Array.php' ]; Loader::addClassMap($map);
雖然透過類別庫映射的方式註冊的類別可以不強制要求對應命名空間目錄,但是仍然建議遵循PSR-4規範定義類別庫和目錄。
類別庫導入
如果你不需要係統的自動載入功能,又或者沒有使用命名空間的話,那麼也可以使用think\Loader類別的import方法手動載入類別庫文件,例如:
Loader::import('org.util.array'); Loader::import('@.util.upload');
範例
// 引入 extends/qrcode.php Loader::import('qrcode', EXTEND_PATH); // 助手函数 import('qrcode', EXTEND_PATH); // 引入 extends/wechat-sdk/wechat.class.php Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php'); // 助手函数 import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');
類別庫導入也採用類似命名空間的概念(但不需要實際的命名空間支援),支援的「根命名空間」包括:
目錄 | 說明 |
---|---|
#behavior | 系統行為類別庫 |
think | #核心基底類別庫 |
traits | 系統Traits類別庫 |
app | 應用程式類別庫 |
@ | 表示當前模組類別庫包 |
如果完全遵從系統的命名空間定義的話,一般來說無需手動載入類別庫文件,直接實例化即可。
Composer自動載入
5.0版本支援Composer安裝的類別庫的自動加載,你可以直接按照Composer依賴庫中的命名空間直接呼叫。
以上是具體分析thinkPHP5.0框架自動載入機制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

CSS回流(reflow)和重繪(repaint)是網頁效能優化中非常重要的概念。在開發網頁時,了解這兩個概念的工作原理,可以幫助我們提高網頁的回應速度和使用者體驗。本文將深入探討CSS回流和重繪的機制,並提供具體的程式碼範例。一、CSS回流(reflow)是什麼?當DOM結構中的元素發生視覺性、尺寸或位置改變時,瀏覽器需要重新計算並套用CSS樣式,然後重新佈局

隨著PHP語言越來越受歡迎,開發人員需要使用越來越多的類別和函數。當專案規模擴大時,手動引入所有依賴項將變得不切實際。這時候就需要一種自動載入機制來簡化程式碼開發和維護過程。自動載入機制是一種PHP語言的特性,可以在運行時自動載入所需的類別和接口,並減少手動的類別文件引入。這樣,程式設計師可以專注於開發程式碼,減少因繁瑣的手動類別引入而產生的錯誤和時間浪費。在PHP中,一般

Go語言(也稱為Golang)是Google開發的一種高效的程式語言,具有並發性和垃圾回收機制等特點。本文將詳細解釋Go語言中的垃圾回收機制,包括其原理、實作方式以及程式碼範例。 1.垃圾回收原理Go語言的垃圾回收機制是透過「標記-清除」演算法實現的。在程式運行過程中,Go運行時會在堆中追蹤哪些物件是可以被存取的(被標記),而哪些物件是無法被存取的,也就是垃圾資料(需要清除

標題:深入探討Golang變數的儲存位置和機制隨著Go語言(Golang)在雲端運算、大數據和人工智慧領域的應用逐漸增多,深入了解Golang變數的儲存位置和機制變得尤為重要。在本文中,我們將詳細探討Golang中變數的記憶體分配、儲存位置以及相關的機制。透過具體程式碼範例,幫助讀者更好地理解Golang變數在記憶體中是如何儲存和管理的。 1.Golang變數的內存

如何利用PHP7的命名空間和自動載入機制組織程式碼的結構?摘要:隨著PHP7的推出,命名空間與自動載入機製成為了PHP開發中不可忽視的重要特性。本文將介紹如何利用PHP7的命名空間和自動載入機制來組織程式碼的結構,並透過具體的程式碼範例進行說明。一、什麼是命名空間?命名空間是PHP7引入的一種機制,用於解決不同類別庫或程式碼檔案之間可能出現的命名衝突問題。透過命名空間

JavaScript如何實現滾動到頁面底部自動載入的內容縮放並保持縱橫比效果?在現代網頁設計中,滾動到頁面底部自動加載更多內容已經成為了常見的功能需求。而當載入的內容包含圖片時,我們常常希望這些圖片能夠維持原有的縱橫比。本文將介紹如何使用JavaScript來實現這個功能,並提供對應的程式碼範例供參考。首先,我們需要取得頁面滾動的位置。在JavaScr

知識普及:了解JS快取機制的五個重要概念,需要具體程式碼範例在前端開發中,JavaScript(JS)快取機制是一個非常關鍵的概念。理解並正確運用快取機制可以大幅提升網頁的載入速度和效能。本文將介紹JS快取機制的五個重要概念,並提供對應的程式碼範例。一、瀏覽器快取瀏覽器快取是指在第一次造訪網頁時,瀏覽器會將網頁的相關資源(例如JS檔案、CSS檔案、圖片等)保存

PHP中的隱式轉換機制解析在PHP程式設計中,隱式轉換是指在不明確指定型別轉換的情況下,PHP會自動將一個資料型別轉換為另一個資料型別的過程。隱式轉換機制在程式設計中非常常見,但也容易造成一些意想不到的bug,因此了解隱式轉換機制的原理和規則對於編寫穩健的PHP程式碼非常重要。 1.整數與浮點型之間的隱式轉換在PHP中,整型和浮點型之間的隱式轉換是非常常見的。當一個整數
