国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

thinkPHP5.0框架自動加載機制分析

2024-05-04 23:56:03
字體:
來源:轉載
供稿:網友

本文實例講述了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.phpLoader::import('qrcode', EXTEND_PATH);// 助手函數import('qrcode', EXTEND_PATH);// 引入 extends/wechat-sdk/wechat.class.phpLoader::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依賴庫中的命名空間直接調用。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 寻甸| 阆中市| 沈丘县| 桐城市| 永年县| 舒兰市| 高安市| 应用必备| 岳西县| 姜堰市| 北京市| 黔南| 红河县| 贵定县| 平舆县| 大荔县| 彰武县| 东阿县| 漳州市| 阿拉善右旗| 彰化县| 武陟县| 牙克石市| 班戈县| 新乡县| 彰化市| 得荣县| 如东县| 调兵山市| 朔州市| 姜堰市| 长沙市| 曲靖市| 徐闻县| 海原县| 梁河县| 汨罗市| 镇坪县| 三原县| 芜湖县| 永靖县|