<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 類庫 [上一頁](# "上一頁")[下一頁](# "下一頁") ThinkPHP的類庫包括基類庫和應用類庫,系統的類庫命名規則如下: | 類庫 | 規則 | 示例 | |-----|-----|-----| | 控制器類 | 模塊名+Action | 例如?UserAction、InfoAction | | 模型類 | 模型名+Model | 例如?UserModel、InfoModel | | 行為類 | 行為名+Behavior | 例如CheckRouteBehavior | | Widget類 | Widget名+Widget | 例如BlogInfoWidget | | 驅動類 | 引擎名+驅動名 | 例如DbMysql表示mysql數據庫驅動、CacheFile表示文件緩存驅動 | 類名和文件名一致, 詳細命名規范可以參考1.6 命名規范。 ### 基類庫 基類庫是指符合ThinkPHP類庫規范的系統類庫,包括ThinkPHP的核心基類庫和擴展基類庫。核心基類庫目錄位于系統的Lib目錄,核心基類庫也就是Think類庫,擴展基類庫位于Extend/Library目錄,可以擴展ORG 、Com擴展類庫。核心基類庫的作用是完成框架的通用性開發而必須的基礎類和內置支持類等,包含有: | 目錄 | 調用路徑 | 說明 | |-----|-----|-----| | Lib/Core | Think.Core | 核心類庫包 | | Lib/Behavior | Think.Behavior | 內置行為類庫包 | | Lib/Driver | Think.Driver | 內置驅動類庫包 | | Lib/Template | Think.Template | 內置模板引擎類庫包 | 核心類庫包下面包含下面核心類庫: | 類名 | 說明 | |-----|-----| | Action | 系統基礎控制器類 | | App | 系統應用類 | | Behavior | 系統行為基礎類 | | Cache | 系統緩存類 | | Db | 系統抽象數據庫類 | | Dispatcher | URL調度類 | | Log | 系統日志類 | | Model | 系統基礎模型類 | | Think | 系統入口和靜態類 | | ThinkException | 系統基礎異常類 | | View | 視圖類 | | Widget | 系統Widget基礎類 | ### 應用類庫 應用類庫是指項目中自己定義或者使用的類庫,這些類庫也是遵循ThinkPHP的命名規范。應用類庫目錄位于項目目錄下面的Lib目錄。應用類庫的范圍很廣,包括Action類庫、Model類庫或者其他的工具類庫,通常包括: | 目錄 | 調用路徑 | 說明 | |-----|-----|-----| | Lib/Action | @.Action或自動加載 | 控制器類庫包 | | Lib/Model | @.Model或自動加載 | 模型類庫包 | | Lib/Behavior | 用B方法調用或自動加載 | 應用行為類庫包 | | Lib/Widget | 用W方法在模板中調用 | 應用Widget類庫包 | 項目根據自己的需要可以在項目類庫目錄下面添加自己的類庫包,例如Lib/Common、Lib/Tool等。 ### 類庫導入 ThinkPHP類庫的導入區別于其他的框架并沒有采用require或者require_once進行導入,所有類庫導入都采用統一的機制,包含下面兩種方式: #### 一、Import顯式導入 ThinkPHP模擬了Java的類庫導入機制,統一采用import方法進行類文件的加載。import方法是ThinkPHP內建的類庫導入方法,提供了方便和靈活的文件導入機制,完全可以替代PHP的require和include方法。例如:`import("Think.Util.Session"); import("App.Model.UserModel");`import方法具有緩存和檢測機制,相同的文件不會重復導入,如果導入了不同的位置下面的同名類庫文件,系統也不會再次導入,例如:`import("Think.Util.Array"); import("ORG.Util.Array");`上面的情況導入會產生引入兩個同名的Array.class.php 類,所以系統不會再次導入ORG.Util.Array類。 注意:在Unix或者Linux主機下面是區別大小寫的,所以在使用import方法的時候要注意目錄名和類庫名稱的大小寫,否則會導入失敗。 對于import方法,系統會自動識別導入類庫文件的位置,ThinkPHP的約定是Think、ORG、Com包的導入作為基類庫導入,否則就認為是項目應用類庫導入。`import("Think.Util.Session"); import("ORG.Util.Page");`上面兩個方法分別導入了Think基類庫的Util/Session.class.php文件和ORG擴展類庫包的Util/Page.class.php文件。 要導入項目的應用類庫文件也很簡單,使用下面的方式就可以了,和導入基類庫的方式看起來差不多:`import("MyApp.Action.UserAction"); import("MyApp.Model.InfoModel");`上面的方式分別表示導入MyApp項目下面的Lib/Action/UserAction.class.php和Lib/Model/InfoModel.class.php類文件。通常我們都是在當前項目里面導入所需的類庫文件,所以,我們可以使用下面的方式來簡化代碼`import("@.Action.UserAction"); import("@.Model.InfoModel");`除了看起來簡單一些外,還可以方便項目類庫的移植。 如果要在當前項目下面導入其他項目的類庫,必須保證兩個項目的目錄是平級的,否則無法使用`import("OtherApp.Model.GroupModel");`的方式來加載其他項目的類庫。 我們知道,按照系統的規則,import方法是無法導入具有點號的類庫文件的,因為點號會直接轉化成斜線,例如我們定義了一個名稱為User.Info.class.php 的文件的話,采用:`import("ORG.User.Info");`方式加載的話就會出現錯誤,導致加載的文件不是ORG/User.Info.class.php 文件,而是ORG/User/Info.class.php 文件,這種情況下,我們可以使用:`import("ORG.User#Info");`來導入。 對于import方法,系統會自動識別導入類庫文件的位置,如果是其它情況的導入,需要指定import方法的第二個參數。例如,要導入當前文件所在目錄下面的 RBAC/AccessDecisionManager.class.php 文件,可以使用:`import("RBAC.AccessDecisionManager",dirname(__FILE__));`如果你要導入的類庫文件名的后綴不是class.php而是php,那么可以使用import方法的第三個參數指定后綴:`import("RBAC.AccessDecisionManager",dirname(__FILE__),".php");`我們建議您使用ThinkPHP開發過程保持類庫名稱采用class.php的后綴規范。 #### 二,別名導入 除了命名空間的導入方式外,import方法還可以支持別名導入,要使用別名導入,首先要定義別名,我們可以在項目配置目錄下面增加alias.php 用以定義項目中需要用到的類庫別名,例如:`return?array( ????'rbac'?=>LIB_PATH.'Common/Rbac.class.php', ????'page'?=>LIB_PATH.'Common/Page.class.php', );`那么,現在就可以直接使用:`import("rbac"); import("page");`導入Rbac和Page類,別名導入方式禁止使用import方法的第二和第三個參數,別名導入方式的效率比命名空間導入方式要高效,缺點是需要預先定義相關別名。 可以為某些需要的類庫定義別名,那么無需定義自動加載路徑也可以快速的自動加載。 ### 導入第三方類庫 我們知道 ThinkPHP 的基類庫都是以.class.php 為后綴的,這是系統內置的一個約定,當然也可以通過 import 的參數來控制, 為了更加方便引入其他框架和系統的類庫, 系統增加了導入第三方類庫的功能, 第三方類庫統一放置在系統擴展目錄下的Vendor 目錄,并且使用vendor 方法導入,其參數和 import 方法是 一致的,只是默認的值有針對變化。 例如,我們把 Zend 的 Filter\Dir.php 放到 Vendor 目錄下面,這個時候 Dir 文件的路徑就是 Vendor\Zend\Filter\Dir.php,我們使用vendor 方法導入只需要使用: `Vendor('Zend.Filter.Dir');`就可以導入Dir類庫了。 Vendor方法也可以支持和import方法一樣的基礎路徑和文件名后綴參數,例如:`Vendor('Zend.Filter.Dir',dirname(__FILE__),'.class.php');` ### 自動加載 在大多數情況下,我們無需手動導入類庫,而是通過配置采用自動加載機制即可,自動加載機制是真正的按需加載,可以很大程度的提高性能。自動加載有三種情況,按照加載優先級從高到低分別是:別名自動加載、系統規則自動加載和自定義路徑自動加載。 #### 一、別名自動加載 在前面我們提到了別名的定義方式,并且采用了import方法進行別名導入,其實所有定義別名的類庫都無需再手動加載,系統會按需自動加載。 #### 二、 系統規則自動加載 果你沒有定義別名的話,系統會首先按照內置的規則來判斷加載,系統規則僅針對行為類、模型類和控制器類,搜索規則如下: <table border="0" cellspacing="1" cellpadding="0"><tr><th>類名</th> <th>規則</th> <th>說明</th> </tr><tr><td rowspan="4">行為類 </td> <td>規則1</td> <td>搜索系統類庫目錄下面的Behavior目錄 </td> </tr><tr><td>規則2</td> <td>搜索系統擴展目錄下面的Behavior目錄 </td> </tr><tr><td>規則3</td> <td>搜索應用類庫目錄下面的Behavior目錄 </td> </tr><tr><td>規則4</td> <td>如果啟用了模式擴展,則搜索模式擴展目錄下面的Behavior目錄 </td> </tr><tr><td rowspan="3">模型類 </td> <td>規則1</td> <td>如果啟用分組,則搜索應用類庫目錄的Model/當前分組 目錄 </td> </tr><tr><td>規則2</td> <td>搜索應用類庫下面的Model目錄 </td> </tr><tr><td>規則3</td> <td>搜索系統擴展目錄下面的Model目錄 </td> </tr><tr><td rowspan="3">控制器類 </td> <td>規則1</td> <td>如果啟用分組,則搜索應用類庫目錄的Action/當前分組 目錄 </td> </tr><tr><td>規則2</td> <td>搜索項目類庫目錄下面的Action目錄 </td> </tr><tr><td>規則3</td> <td>搜索系統擴展目錄下面的Action目錄 </td> </tr></table> 注意:搜索的優先順序從上至下 ,一旦找到則返回,后面規則不再檢測。如果全部規則檢測完成后依然沒有找到類庫,則開始進行第三個自定義路徑自動加載檢測。 #### 三、 自定義路徑自動加載 當你的類庫比較集中在某個目錄下面,而且不想定義太多的別名導入的話,可以使用自定義路徑自動加載方式,這種方式需要在項目配置文件中添加自動加載的搜索路徑,例如:`'APP_AUTOLOAD_PATH'?=>'@.Common,@.Tool',`表示,在當前項目類庫目錄下面的Common和Tool目錄下面的類庫可以自動加載。多個搜索路徑之間用逗號分割,并且注意定義的順序也就是自動搜索的順序。 注意:自動搜索路徑定義只能采用命名空間方式,也就是說這種方式只能自動加載項目類庫目錄和基類庫目錄下面的類庫文件。 [上一頁](# "上一頁")[下一頁](# "下一頁")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看