<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 模式擴展 [上一頁](149.html "上一頁")[下一頁](151.html "下一頁") 模式擴展屬于系統核心級別的擴展,可以改變底層的架構體系。在眾多擴展中,也只有模式擴展具有改變和替換核心MVC的可能,其他擴展只是在標準模式基礎之上的增強和替換,無法從根本上改變底層的架構。所以,大家會看到不同的模式擴展可能具有很大的用法區別,有些模式擴展是為某個特別的應用環境而定制的,例如CLI模式、AMF模式和PHPRPC模式。 新版對模式擴展的改進和行為擴展的增強使得開發人員對底層框架的DIY更加方便,也正是因為支持對框架底層進行DIY,使得ThinkPHP能夠滿足企業開發中更加復雜的項目需求。### 使用模式擴展 我們前面所涉及的所有用法都是基于框架內置的標準模式的,除了標準模式之外,官方還提供了一些常用的模式擴展,模式擴展的目錄位于Extend/Mode下面,已經提供的包括:Cli(命令模式)、Lite(精簡模式)、Thin(簡潔模式)、AMF模式、PHPRPC模式和REST模式,他們為不同的需求提供了不同的底層框架解決方案。通常來說不同的模式之間是無法進行切換。 要使用某個擴展模式,需要修改項目的入口文件,添加一行定義代碼:`define('MODE_NAME','模式擴展名稱');`每個項目只能使用一個模式擴展,所以即使采用了分組,不同的分組也只能采用相同的模式擴展。使用了模式擴展后,項目的編譯緩存文件有所變化,例如,如果你當前用的是REST模式,那么生成的編譯緩存文件則會變成~rest_runtime.php。 具體不同模式的用法需要參考每個模式擴展的幫助文件。### 簡潔模式 簡潔模式相當于標準模式的主要區別在于: 默認不使用任何模板引擎(可以自己在操作方法里面調用); 模型僅支持原生SQL操作和事務; 支持多數據庫切換和連接; 默認僅支持MySQL數據庫; 不支持語言包、模塊分組、模板主題和Dispatch功能; 去除了大部分擴展機制; 如果你的應用選擇了Mysql數據庫,并且完全使用原生SQL操作,并希望有一個輕巧的核心,那么簡潔模式是一個很好的選擇。 要使用簡潔模式,需要在項目的入口文件中添加模式定義:`define('MODE_NAME','Thin');//采用簡潔模式運行`### 精簡模式 精簡模式在簡潔模式的基礎上,增加了: 默認使用PHP模板; 支持不帶路由的Dispatch; 支持不帶回調接口的CURD操作; 支持連貫操作、統計查詢; 精簡模式比簡潔模式在模型方面多了CURD和連貫操作,如果你習慣于使用PHP作為模板,并且還是喜歡使用模型的CURD功能,但又不希望核心那么龐大,那么精簡模式是一個不錯的選擇。 要使用精簡模式,需要在項目的入口文件中添加模式定義:`define('MODE_NAME','Lite');//采用精簡模式運行`### 命令模式 命令模式用于支持命令行模式下面的PHP應用,需要在入口文件設置:`define('MODE_NAME',?'cli')?//采用CLI運行模式運行`在命令模式下面,支持兩種命令行的參數模式, 一、PATHINFO參數模式(URL_MODEL為1) 在PATHINFO參數模式下面,我們可以這樣調用模塊和操作`index.php?module/action/id/4`二、普通參數模式(URL_MODEL設置為其它) 在普通參數模式下面 ,我們需要這樣調用模塊和操作`index.php?module?action?id?4`在命令行模式下面,系統會自動把參數轉換為GET變量,無論采用哪種命令行參數模式,我們可以直接使用GET變量獲取參數,例如,采用下面的方式調用`index.php?Info/read/category/2/id/4`在控制器中,我們可以直接獲取$_GET['category'](這里傳入的是2)和$_GET['id'](這里傳入的是4)參數,如果你需要自己解析傳入的參數順序和值,就需要采用原生的系統變量$_SERVER['argv']來獲取參數了。### AMF模式 AMF模式采用了ZendAMF類庫,支持AMF開發和Flash進行通訊。首先,我們需要設置當前運行模式為Amf模式,在入口文件中增加下面代碼:`define('MODE_NAME',?'amf')?//采用Amf運行模式運行`然后在項目配置文件中定義`'APP_AMF_ACTIONS'=>'Index,User,Shop…'//?定義AMF模式的模塊列表`只有在APP_AMF_ACTIONS中定義的模塊才能在Amf模式中調用到。 最后一步就是在你的Flash客戶端或者AS腳本中修改Amf的網關地址為當前項目的入口地址即可。### PHPRPC模式 首先,我們設置當前運行模式為Phprpc模式:`define('MODE_NAME',?'phprpc')?//采用Phprpc運行模式運行`然后在項目配置文件中定義`'APP_PHPRPC_ACTIONS'=>'Index,User,Shop…'//?定義PHPRPC模式的模塊列表`只有在APP_PHPRPC_ACTIONS中定義的模塊才能在PHPRPC模式中調用到。### REST模式 Rest模式主要是為了支持RESTFul的開發,鑒于目前Rest主要用來提供接口服務,所以單獨作為模式擴展來使用。首先,我們設置當前運行模式為rest模式:`define('MODE_NAME',?'rest')?//采用rest模式運行`關于Rest的更多用法,請參考16.2 REST支持部分。### 定制模式擴展 要定制自己的模式擴展,首先要定義模式擴展的定義文件,定義文件位于Extend/Mode目錄下面,命名就是模式擴展的名稱(全部為小寫),定義文件是一個數組,包括:core 系統核心列表文件定義 config 模式配置文件 alias 模式別名定義文件 extends 模式系統行為定義 tags 應用行為定義文件 core是模式核心列表文件,如果core沒有定義,則表示采用標準模式的核心列表文件,被定義的文件列表會納入編譯緩存,核心列表可以包含函數文件和類庫文件,注意下面的文件無需定義:系統的Common公共文件、Think類、ThinkException類和Behavior類。下面的類必須定義:App類和Action類。 config是模式配置定義,可以采用文件名或者直接用數組定義的方式。 alias是模式別名定義,可以采用文件名或者直接用數組定義的方式。 extends是模式系統行為定義,可以采用文件名或者直接用數組定義的方式。 tags是應用行為定義,可以采用文件名或者直接用數組定義的方式。 上面這些定義,只有需要的時候才要定義,如果沒有則可不必定義,一般core定義是模式擴展必須的,改變核心列表文件的定義就能起到自定義MVC的目的。 例如,命令行模式的模式定義文件為:`//?命令行模式定義文件<br class="calibre5"></br>return?array(<br class="calibre5"></br>????'core'?=>???array(<br class="calibre5"></br>????????MODE_PATH.'Cli/functions.php',???//?命令行系統函數庫<br class="calibre5"></br>????????MODE_PATH.'Cli/Log.class.php',<br class="calibre5"></br>????????MODE_PATH.'Cli/App.class.php',<br class="calibre5"></br>????????MODE_PATH.'Cli/Action.class.php',<br class="calibre5"></br>????),<br class="calibre5"></br>????//?項目別名定義文件?[支持數組直接定義或者文件名定義]<br class="calibre5"></br>????'alias'?????????=>????array(<br class="calibre5"></br>????????'Model'????=>???MODE_PATH.'Cli/Model.class.php',<br class="calibre5"></br>????????'Db'????????=>????MODE_PATH.'Cli/Db.class.php',<br class="calibre5"></br>????????'Cache'?????????=>?CORE_PATH.'Core/Cache.class.php',<br class="calibre5"></br>????????'Debug'?????????=>?CORE_PATH.'Util/Debug.class.php',<br class="calibre5"></br>????),<br class="calibre5"></br>????//?系統行為定義文件<br class="calibre5"></br>????'extends'????=>????array(),<br class="calibre5"></br>);`模式擴展本身是一個擴展的集成,自身還可以包含其他擴展,例如行為擴展、函數擴展、類庫擴展等。如果模式擴展中包含了自己的行為擴展,那么可以放到模式擴展目錄下面的Behavior目錄下面,系統可以自動加載該目錄下面的行為類庫。 [上一頁](149.html "上一頁")[下一頁](151.html "下一頁")
                  <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>

                              哎呀哎呀视频在线观看