Thinkphp5.1自動加載機制
自動加載機制
-
注冊自動加載
- 引入靜態自動加載映射文件,autoload_static.php
- 根據首字母前綴將不同的加載類歸類-$prefixLengthsPsr4
- 將命令空間映射到指定文件目錄下-$prefixDirsPsr4
- compose下載的包文件,需要加載的文件-$files
- 類映射關系-$classMap
- 檢測是否有composer自動加載的支持
- 注冊think、traints命名空間定義
- 查看runtime目錄下是否有類映射文件存在,加載類庫映射文件
- 自動加載extend目錄
- 引入靜態自動加載映射文件,autoload_static.php
-
注冊錯誤和異常機制
- Log
- Error
- Exception
- Handle
-
注冊類庫別名
- app
- Config
- ......
-
自動加載文件機制
- PSR4-獲取文件頂部命名空間首字母,根據首字段查找到首字母相同部分的映射類
- PSR4-根據查找到對應字母相同的部分映射類文件,再取得頂級命名空間與類通過字符串查找匹配頂級命名空間是否相對應
- PSR4-匹配中,則取文件基目錄(application目錄)拼接去掉頂級命令中間,含有子級命名空間的文件類名(包括文件后綴),判斷是否為文件,是,則返回,include該文件
- 若不是文件,則去查看擴展目錄(extend目錄)該文件是否存在,是,則返回,include該文件
- PSR4-的application&extend均匹配不中,則去PSR0匹配,同樣也是先去application查找是否存在,再去extend查找
- 若不存在則該文件映射置為false
