天天看點

thinkphp中的類庫與引用import引入機制

ThinkPHP的類庫包括基類庫和應用類庫

基類庫是指符合ThinkPHP類庫規範的系統類庫,包括ThinkPHP的核心基類庫和擴充基類庫。核心基類庫目錄位于系統的Lib目錄,核心基類庫也就是Think類庫,擴充基類庫位于Extend/Library目錄,可以擴充ORG 、Com擴充類庫。核心基類庫的作用是完成架構的通用性開發而必須的基礎類和内置支援類等

thinkphp中的類庫與引用import引入機制

其中Core下面包括

thinkphp中的類庫與引用import引入機制

應用類庫是指項目中自己定義或者使用的類庫,這些類庫也是遵循ThinkPHP的命名規範。應用類庫目錄位于項目目錄下面的Lib目錄。應用類庫的範圍很廣,包括Action類庫、Model類庫或者其他的工具類庫

thinkphp中的類庫與引用import引入機制

可以用import加載,也可以自動加載。比如調用資料庫類的時候,就可以直接M('User')或者D('User')。

ThinkPHP類庫的導入差別于其他的架構并沒有采用require或者require_once進行導入,所有類庫導入都采用統一的機制,包含下面兩種方式:

ThinkPHP模拟了Java的類庫導入機制,統一采用import方法進行類檔案的加載。import方法是ThinkPHP内建的類庫導入方法,提供了友善和靈活的檔案導入機制,完全可以替代PHP的require和include方法。例如:

import方法具有緩存和檢測機制,相同的檔案不會重複導入,如果導入了不同的位置下面的同名類庫檔案,系統也不會再次導入,例如:

上面的情況導入會産生引入兩個同名的Array.class.php 類,是以系統不會再次導入ORG.Util.Array類。

對于import方法,系統會自動識别導入類庫檔案的位置,ThinkPHP的約定是Think、ORG、Com包的導入作為基類庫導入,否則就認為是項目應用類庫導入。

上面兩個方法分别導入了Think基類庫的Util/Session.class.php檔案和ORG擴充類庫包的Util/Page.class.php檔案。

要導入項目的應用類庫檔案也很簡單,使用下面的方式就可以了,和導入基類庫的方式看起來差不多:

上面的方式分别表示導入MyApp項目下面的Lib/Action/UserAction.class.php和Lib/Model/InfoModel.class.php類檔案。通常我們都是在目前項目裡面導入所需的類庫檔案,是以,我們可以使用下面的方式來簡化代碼

thinkphp中的類庫與引用import引入機制

我們知道,按照系統的規則,import方法是無法導入具有點号的類庫檔案的,因為點号會直接轉化成斜線,例如我們定義了一個名稱為User.Info.class.php 的檔案的話,采用:

方式加載的話就會出現錯誤,導緻加載的檔案不是ORG/User.Info.class.php 檔案,而是ORG/User/Info.class.php 檔案(最後一個點後面的值為類名),這種情況下,我們可以使用:

在大多數情況下,我們無需手動導入類庫,而是通過配置采用自動加載機制即可,自動加載機制是真正的按需加載,可以很大程度的提高性能。

系統會首先按照内置的規則來判斷加載,系統規則僅針對行為類、模型類和控制器類,搜尋規則如下:

thinkphp中的類庫與引用import引入機制

本文轉自TBHacker部落格園部落格,原文連結:http://www.cnblogs.com/jiqing9006/p/5041389.html,如需轉載請自行聯系原作者