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

首頁 > 開發 > ThinkPHP > 正文

揭秘ThinkPHP3.1.2版本的獨立分組功能

2024-09-09 15:19:50
字體:
來源:轉載
供稿:網友

ThinkPHP的分組功能是廣為開發者使用的一個功能,可以解決中大型項目情況中MVC分層文件過多導致不易管理的問題.

而3.1.2版本添加的獨立分組功能則為此類問題提出了新的解決思路,更加適合組件化的開發模式。雖然目前3.1.2版本還未正式發布,不過我們可以先了解下這一功能.

概述:獨立分組功能不影響原有分組模式的運行,并且原有分組模式僅需移動目錄結構即可完成獨立分組模式的升級,無需任何應用代碼的改動。

而且新的獨立分組可以很方便的獨立裝卸和移動,可以擺脫原來普通分組文件分散在各個不同的目錄下面的困擾。

獨立分組的URL訪問和原先的普通分組一樣,沒有任何區別,配置分組列表也仍然采用APP_GROUP_LIST參數配置,設置默認分組則采用DEFAULT_GROUP參數,例如:

'APP_GROUP_LIST'=>'Home,Admin',

'DEFAULT_GROUP'=>'Home',

雖然新的獨立分組已經完全可以取代原有普通分組模式,不過為了考慮到原有分組項目的平滑升級,此次新版增加了一個配置參數:

APP_GROUP_MODE 用于配置分組模式,默認為0 為原有的普通分組模式,如果設置為1 則表示啟用獨立分組模式。

是否需要升級為獨立分組模式完全由你決定,相信你看完后面的內容會有明智的選擇。

目錄結構:啟用獨立分組模式后,你需要在項目目錄下面創建獨立分組目錄,該目錄可以由項目配置文件通過APP_GROUP_PATH參數配置,默認值為Modules,假設我們沒有做任何更改的話,在Modules目錄下面就是每個分組的子目錄,每個分組是完全獨立的,包括模型、控制器、視圖、配置和函數文件等等,你可以很方便的實現分組的移動和卸載.

標準的獨立分組目錄結構為(以一個Home分組為例):

─Home Home分組目錄

  ├─Common 分組函數目錄
  ├─Conf 分組配置目錄
  ├─Lang 分組語言包目錄
  ├─Action 分組Action控制器目錄
  ├─Model 分組Model模型目錄
  ├─Widget 分組Widget目錄
  ├─ORG 分組擴展類庫目錄
  ├─... 其他分層目錄
  └─Tpl 分組模板目錄

注意:獨立分組的目錄結構目前需要手動創建

基本上可以看到,獨立分組除了沒有入口文件外,其他獨立項目具備的結構都基本具備了.從原來的普通分組升級到獨立分組,只需要在項目配置文件中增加:

'APP_GROUP_MODE'=>1

然后把原來項目Lib目錄下面屬于對應分組的MVC文件,以及分組的函數、配置和語言(如果有的話)文件依次對照上面的獨立分組的目錄結構放入對應目錄即可.

公共文件:采用獨立分組后,原來的項目Lib目錄則作為分組公共類庫文件設計,如果你的多個獨立分組需要調用公共的Action或者Model類的話(其實還包括其他的分層控制器和模型類),則可以把這些公共類放入項目的Lib目錄下面的對應目錄(實際的升級過程中,這些公共類庫文件基本上保持目錄結構不變,所以無需移動).

分組的公共類庫文件無需手動加載,均采用了自動加載機制,所以,最終采用獨立分組模式的實際項目目錄結構如下:

├─index.php     項目入口文件
├─Common 項目公共文件目錄
├─Conf 項目配置目錄
├─Lang 項目語言目錄
├─Modules 獨立分組目錄
│  ├─Home Home分組目錄(獨立分組目錄結構參考前面)
│  ├─Admin Admin分組目錄
│  └─... 其他分組目錄
├─Lib 分組公共類庫目錄
│  ├─Action 公共Action類庫目錄
│  ├─Behavior 公共行為類庫目錄
│  ├─Model 公共模型類庫目錄
│  └─... 其他公共類庫目錄
├─Runtime 項目運行時目錄
│  ├─Cache 模板緩存目錄
│  ├─Data 數據緩存目錄
│  ├─Logs 日志文件目錄
│  └─Temp 臨時緩存目錄
 

模板文件:獨立分組的模板文件由項目的Tpl目錄移動到了獨立分組目錄的Tpl目錄,原來的模板分組子目錄不再需要,例如:

Tpl/Home/Index/index.html 

移動到獨立分組下的Tpl目錄后,應該是:Tpl/Index/index.html模板主題功能仍然支持。

調用類庫:獨立分組在導入類庫的時候,使用方法和導入項目類庫基本一致,例如:

  1. import('@.Action.TestAction'); // 導入當前分組下的Action/TestAction.class.php 
  2. import('@.ORG.Util.Image'); // 導入當前分組下的ORG/Util/Image.class.php 

獨立分組不考慮多個分組之間的交互和調用,只能調用公共類庫,如果你必須調用其他分組的類庫,而沒有采用公共類庫設計的話,那么可以使用:

import('ORG.Util.Image',APP_PATH.'Modules/Admin'); 

不過,采用獨立分組后,A方法和R方法、D方法均不支持跨分組調用了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 北海市| 永年县| 交口县| 红原县| 中超| 天全县| 阿克陶县| 通辽市| 丰都县| 江门市| 阿尔山市| 女性| 敖汉旗| 桂阳县| 定西市| 峨眉山市| 嘉荫县| 霍山县| 武陟县| 高州市| 南昌市| 溧阳市| 盐城市| 堆龙德庆县| 朝阳县| 娄底市| 崇信县| 无为县| 三门峡市| 漳州市| 育儿| 太仆寺旗| 东源县| 台前县| 兖州市| 永登县| 汝城县| 金昌市| 左权县| 府谷县| 海兴县|