ThinkPHP5安裝後(或者下載後的壓縮文件解壓後)可以看到下面的目錄結構:
tp5├─application 應用目錄 ├─extend 擴展類庫目錄(可定義) ├─public 網站對外訪問目錄 ├─runtime 運行時目錄(可定義) ├─vendor 第三方類庫目錄(Composer) ├─thinkphp 框架核心目錄 ├─build.php 自動生成定義文件(參考) ├─composer.json Composer定義文件 ├─LICENSE.txt 授權說明文件 ├─README.md README 文件 ├─think 命令行工具入口
一般的信息管理項目中都分為前台和後台所以在application中一般新建admin和index兩個文件夾,index文件夾一般在配置好環境後第一次運行index.php入口文件的時候會自動生成,而admin文件夾我們可以使用命令行的方式來生成。
切換到命令行模式下,進入到應用根目錄並執行如下指令:
php think build --moudle admin
就會生成一個admin模塊,包括如下目錄結構:
├─admin │ ├─controller 控制器目錄 │ ├─model 模型目錄 │ ├─view 視圖目錄 │ ├─config.php 模塊配置文件 │ └─common.php 模塊公共文件
同時也會生成一個默認的Index
控制器文件。
這樣,整個項目的目錄結構就變成了:
├─application 應用目錄(可設置) │ ├─index 模塊目錄(可更改) │ │ ├─config.php 模塊配置文件 │ │ ├─common.php 模塊公共文件 │ │ ├─controller 控制器目錄 │ │ ├─model 模型目錄 │ │ └─view 視圖目錄 │ ├─admin 模塊目錄(可更改)
│ │ ├─config.php 模塊配置文件
│ │ ├─common.php 模塊公共文件
│ │ ├─controller 控制器目錄
│ │ ├─model 模型目錄
│ │ └─view 視圖目錄 │ │ │ ├─command.php 命令行工具配置文件 │ ├─common.php 應用公共文件 │ ├─config.php 應用配置文件 │ ├─tags.php 應用行為擴展定義文件 │ ├─database.php 數據庫配置文件 │ └─route.php 路由配置文件
可以看出index和admin模塊中都包含model、controller、和view三個文件夾,這三個文件夾分別存放MVC模式中的模型、控制器和視圖文件。
由於Model層存放的是模型,也就是與數據庫中表內容相對應的類文件,而這部分數據庫的操作在index和admin模塊中都是需要的。所以我們將model文件夾放在Index和admin模塊的外部,合二為一,這樣index和admin就可以很方便的使用它了,從邏輯上也變得更清晰,現在,整個目錄結構變這樣:
├─application 應用目錄(可設置) │ ├─index 模塊目錄(可更改) │ │ ├─config.php 模塊配置文件 │ │ ├─common.php 模塊公共文件 │ │ ├─controller 控制器目錄 │ │ └─view 視圖目錄 │ ├─admin 模塊目錄(可更改) │ │ ├─config.php 模塊配置文件 │ │ ├─common.php 模塊公共文件 │ │ ├─controller 控制器目錄 │ │ └─view 視圖目錄 │ │ │ ├─model 模型層 │ ├─command.php 命令行工具配置文件 │ ├─common.php 應用公共文件 │ ├─config.php 應用配置文件 │ ├─tags.php 應用行為擴展定義文件 │ ├─database.php 數據庫配置文件 │ └─route.php 路由配置文件
為了實現數據與操作的分離,model層進一步細化為model層、logic層、service層,這些默認是放在某個模塊下的,如在index模塊中logic層默認的目錄是index/logic,這樣ThinkPHP才能找到它,如果沒找到它的話,ThinkPHP會到模塊外部的Common文件夾中找它,service層也是這樣的,如果我們想index和admin兩個模塊都使用它們,那麼我們需要把它們放在application\common文件夾中,這就需要在application中新建一個common文件夾。現在目錄結構變成這樣:
├─application 應用目錄(可設置) │ ├─index 模塊目錄(可更改) │ │ ├─config.php 模塊配置文件 │ │ ├─common.php 模塊公共文件 │ │ ├─controller 控制器目錄 │ │ └─view 視圖目錄 │ ├─admin 模塊目錄(可更改) │ │ ├─config.php 模塊配置文件 │ │ ├─common.php 模塊公共文件 │ │ ├─controller 控制器目錄 │ │ └─view 視圖目錄 │ │ │ ├─model 模型目錄 │ ├─common 公共目錄
│ │ ├─logic 邏輯層
│ │ ├─service 服務層 │ ├─command.php 命令行工具配置文件 │ ├─common.php 應用公共文件 │ ├─config.php 應用配置文件 │ ├─tags.php 應用行為擴展定義文件 │ ├─database.php 數據庫配置文件 │ └─route.php 路由配置文件
由於在ThinkPHP5中將模型驗證也與模型分離了出來,放在每個模塊下專門的validate文件夾中,而驗證無論是前台或後台向數據庫中寫數據都是需要的,ThinkPHP查找它的方法與前述查找logic層的方法是一樣的,
先在本模塊的validate文件夾中找它,如果找不到就調到本模塊外層的common文件夾中尋找。同樣地,我們將它放在模塊外層的common文件家中。現在,目錄變成如下的樣子:
├─application 應用目錄(可設置)
│ ├─index 模塊目錄(可更改)
│ │ ├─config.php 模塊配置文件
│ │ ├─common.php 模塊公共文件
│ │ ├─controller 控制器目錄
│ │ └─view 視圖目錄
│ ├─admin 模塊目錄(可更改)
│ │ ├─config.php 模塊配置文件
│ │ ├─common.php 模塊公共文件
│ │ ├─controller 控制器目錄
│ │ └─view 視圖目錄
│ │
│ ├─model 模型目錄
│ ├─common 公共目錄
│ │ ├─logic 邏輯層
│ │ ├─service 服務層
│ │ ├─validate 模型驗證
│ ├─command.php 命令行工具配置文件
│ ├─common.php 應用公共文件
│ ├─config.php 應用配置文件
│ ├─tags.php 應用行為擴展定義文件
│ ├─database.php 數據庫配置文件
│ └─route.php 路由配置文件
好了,以上就是我關於ThinkPHP5在實際項目中目錄規劃的一點建議,如有不妥,請批評指正!
參考文獻:
[1]ThinkPHP5.0快速入門
[2]ThinkPHP5.0完全開發手冊
[3]ThinkPHP5.0入門實例教程