亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

thinkPHP5.0框架自動(dòng)加載機(jī)制分析

 更新時(shí)間:2017年03月18日 09:41:49   作者:chinalorin  
這篇文章主要介紹了thinkPHP5.0框架自動(dòng)加載機(jī)制,較為詳細(xì)的分析了thinkPHP5.0自動(dòng)加載的概念、原理、用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了thinkPHP5.0框架自動(dòng)加載機(jī)制。分享給大家供大家參考,具體如下:

概述

ThinkPHP5.0 真正實(shí)現(xiàn)了按需加載,所有類庫(kù)采用自動(dòng)加載機(jī)制,并且支持類庫(kù)映射和composer類庫(kù)的自動(dòng)加載。

自動(dòng)加載的實(shí)現(xiàn)由think\Loader類庫(kù)完成,自動(dòng)加載規(guī)范符合PHP的PSR-4。

自動(dòng)加載

由于新版ThinkPHP完全采用了命名空間的特性,因此只需要給類庫(kù)正確定義所在的命名空間,而命名空間的路徑與類庫(kù)文件的目錄一致,那么就可以實(shí)現(xiàn)類的自動(dòng)加載。

類庫(kù)的自動(dòng)加載檢測(cè)順序如下:

1、類庫(kù)映射檢測(cè);
2、PSR-4自動(dòng)加載檢測(cè);
3、PSR-0自動(dòng)加載檢測(cè);

系統(tǒng)會(huì)按順序檢測(cè),一旦檢測(cè)生效的話,就會(huì)自動(dòng)載入對(duì)應(yīng)的類庫(kù)文件。

類庫(kù)映射

遵循我們上面的命名空間定義規(guī)范的話,基本上可以完成類庫(kù)的自動(dòng)加載了,但是如果定義了較多的命名空間的話,效率會(huì)有所下降,所以,我們可以給常用的類庫(kù)定義類庫(kù)映射。命名類庫(kù)映射相當(dāng)于給類文件定義了一個(gè)別名,效率會(huì)比命名空間定位更高效,例如:

Loader::addClassMap('think\Log',LIB_PATH.'think\Log.php');
Loader::addClassMap('org\util\Array',LIB_PATH.'org\util\Array.php');

也可以利用addClassMap方法批量導(dǎo)入類庫(kù)映射定義,例如:

$map = [
  'think\Log'   => LIB_PATH.'think\Log.php',
  'org\util\array'=> LIB_PATH.'org\util\Array.php'
];
Loader::addClassMap($map);

雖然通過類庫(kù)映射的方式注冊(cè)的類可以不強(qiáng)制要求對(duì)應(yīng)命名空間目錄,但是仍然建議遵循PSR-4規(guī)范定義類庫(kù)和目錄。

類庫(kù)導(dǎo)入

如果你不需要系統(tǒng)的自動(dòng)加載功能,又或者沒有使用命名空間的話,那么也可以使用think\Loader類的import方法手動(dòng)加載類庫(kù)文件,例如:

Loader::import('org.util.array');
Loader::import('@.util.upload');

示例

// 引入 extends/qrcode.php
Loader::import('qrcode', EXTEND_PATH);
// 助手函數(shù)
import('qrcode', EXTEND_PATH);
// 引入 extends/wechat-sdk/wechat.class.php
Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');
// 助手函數(shù)
import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');

類庫(kù)導(dǎo)入也采用類似命名空間的概念(但不需要實(shí)際的命名空間支持),支持的“根命名空間”包括:

目錄 說明
behavior 系統(tǒng)行為類庫(kù)
think 核心基類庫(kù)
traits 系統(tǒng)Traits類庫(kù)
app 應(yīng)用類庫(kù)
@ 表示當(dāng)前模塊類庫(kù)包

如果完全遵從系統(tǒng)的命名空間定義的話,一般來說無(wú)需手動(dòng)加載類庫(kù)文件,直接實(shí)例化即可。

Composer自動(dòng)加載

5.0版本支持Composer安裝的類庫(kù)的自動(dòng)加載,你可以直接按照Composer依賴庫(kù)中的命名空間直接調(diào)用。

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》、《smarty模板入門基礎(chǔ)教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論