用thinkphp開發了好些項目了;最近準備抽空寫一些經驗總結;php
但願能給剛開始接觸tp的童鞋們提供一些開發的方案;少走一些彎路;少踩一些坑;css
這些絕對都是些精華乾貨;耐着性子閱讀;相信收貨大大的;html
能夠結合git項目對照研究:http://git.oschina.net/shuaibai123/thinkphp-bjyadminjquery
先從thinkphp的目錄架構開始吧;git
thinkbjy 白俊遙博客 ├─Application 項目邏輯目錄 │ ├─Common 公共模塊 │ │ ├─Common 公共函數目錄 │ │ │ ├─functioin.php 公共函數php文件 │ │ ├─Conf 公共配置文件目錄 │ │ │ ├─config.php tp的配置 用於覆蓋框架默認配置項 │ │ │ ├─db.php 數據庫配置 用戶名 密碼等 │ │ │ ├─webconfig.php 項目的配置;網站名;是否開啓網站等 │ │ ├─Controller 公共控制器目錄 │ │ │ ├─BaseController.class.php 應用最基礎的控制器 │ │ │ ├─HomeBaseController.class.php Home基礎控制器繼承BaseController │ │ │ ├─AdminBaseController.class.php Admin基礎控制器繼承BaseController │ │ │ ├─UserBaseController.class.php User基礎控制器繼承BaseController │ │ │ ├─... │ │ ├─Model 公共模型目錄 │ │ │ ├─BaseModel.class.php 應用最基礎的Model │ │ │ ├─ArticleModel.class.php 文章model 繼承BaseModel │ │ │ ├─UserModel.class.php 用戶model 繼承BaseModel │ │ │ ├─... │ │ ├─Tag 公共標籤目錄 │ │ │ ├─My.class.php 自定義的標籤庫 │ │ │ ├─... │ ├─Home Home模塊 │ │ ├─Controller Home控制器目錄 繼承HomeBaseController │ │ │ ├─ArticleController.class.php 文章控制器目錄 │ │ │ ├─IndexController.class.php 首頁控制器 │ │ │ ├─ ... │ ├─Admin 結構同Home │ ├─User 結構同Home ├─Public 資源文件目錄 │ ├─install 安裝引導目錄 │ ├─statics 靜態資源目錄 │ │ ├─bootstrap bootstrap框架 │ │ ├─ueditor ueditor編輯器 │ │ ├─js jquery等第三方js存放的目錄 │ │ ├─css animate.css等第三方css目錄 │ │ ├─ ... ├─Template 視圖文件目錄 │ ├─Public 公共目錄 │ │ ├─js 公共js目錄 │ │ │ ├─base.js 全站都引用的js文件 │ │ │ ├─ ... │ │ ├─css 公共css目錄 │ │ │ ├─base.css 全站都引用的css文件 │ │ │ ├─ ... │ │ ├─images 公共圖片目錄 │ │ ├─public_head.html 全站通用的公共頭部 │ │ ├─public_foot.html 全站通用的公共底部 │ │ ├─... │ ├─Home 前臺Home視圖目錄 │ │ ├─Public 前臺Home的公共目錄 │ │ │ ├─js home下調用的js文件目錄 │ │ │ ├─css home下調用的css文件目錄 │ │ │ ├─images home下調用的圖片文件目錄 │ │ ├─Index 首頁文件目錄 │ │ │ ├─index.html 首頁 │ │ │ ├─ ... │ ├─Admin 同Home │ ├─User 同Home ├─Upload 公共上傳目錄 │ ├─images 上傳的圖片目錄 │ │ ├─avatar 頭像目錄 │ │ ├─ueditor ueditor編輯器上傳的圖片目錄 │ │ │ ... │ │ ... ├─Runtime 運行時目錄 ├─ThinkPHP 框架系統目錄
/Application/Common/Common/function.php 這個做爲經常使用公共函數文件;web
平時常常用的自定義函數均可以放裏面;thinkphp
好比說 以前寫過的p函數 以符合人類閱讀的方式打印php數組數據庫
而後還建議寫:判斷用戶是否登錄的函數、獲取當前登錄用戶id的函數、上傳函數、圖片處理函數、驗證碼函數、分頁函數等等;bootstrap
/Application/Common/Conf 公共配置項目錄下 我建議至少建立以下3個文件數組
config.php、db.php、webconfig.php 爲何要建立3個配置項文件呢?我來詳細的講解這三個文件的做用;
config.php裏面都是系統的配置項;咱們這個文件主要是用來覆蓋框架默認的配置項;這個文件好理解些;
db.php 數據庫的帳號密碼等;單獨放一個文件是由於不少時候;這個文件須要根據應用安裝的時候填寫的數據庫帳號密碼生成的文件;
webconfig.php 這個文件獨立出來的緣由同上;
/Application/Common/Controller 公共控制器目錄
這個目錄下必定要建一個BaseController.class.php 爲了開發維護的方便 咱們開發要儘可能避免改動框架的文件;
因此呢;爲了避免改動框架的Controller.class.php 咱們本身建一個BaseController之後全部的Controller都繼承它;
這樣只要在BaseController裏面寫的方法;全部的控制器都繼承到了;均可以用到;
可是呢;咱們開發的項目可能會比較複雜;只有一個BaseController會比較雜亂;因此咱們還能夠根據業務需求再建AdminBaseController.class.php 能夠在__construct構造函數中判斷若是不是管理員;禁止訪問;咱們只須要全部把全部須要有管理員權限纔可訪問的控制器所有繼承AdminBaseController; 這樣這些控制器就不須要每一個都判斷是不是管理員了;
具體能夠看 thinkphp集成系列之rbac的升級版auth權限管理系統demo
UserBaseController.class.php 等其餘xxBaseController一樣道理;好比說用戶的我的中心必須是登錄狀態纔可訪問等等;
/Application/Common/Model 公共模型目錄
這個目錄必定要建一個BaseModel.class.php 爲何呢?
巴拉巴拉。。。
巴拉巴拉。。。
好吧;我在組織語言的時候;發現越寫越多;因此我準備單獨開一片文章來寫BaseModel的問題;
/Application/Common/Tag 公共標籤目錄
爲了方便開發;咱們仍是必需要建一個自定義的標籤庫;My.class.php
什麼是標籤庫呢?咱們會發如今模板中tp內置好多標籤很好用;好比說foreach、volist、eq;
官方的文檔傳送門:內置標籤
什麼?不知道怎麼自定義標籤? 好吧;再來個傳送門:thinkphp自定義模板標籤
/Public 資源文件目錄
能夠把boostrap、jquery等第三方插件扔到這裏面
/Template 視圖目錄
建議把每一個模塊的View都移到這個目錄中集中管理;否則開發的時候各類點目錄切換;那酸爽;誰用誰知道;
/Template/default/Home/Public/js/base.js 和/Template/default/Home/Public/css/base.css 強烈建議全站都引用;裏面寫一些全站均可以用的樣式或函數;好比css的reset;其餘的看上面的目錄就能夠看明白的;就很少囉嗦了;
/Runtime 運行時目錄
和Template同樣;建議都移到最外層;方便咱們刪除緩存;
好吧;認真寫博客真的很耗時;這篇博客寫了整整3個小時;希望能幫到童鞋們;
本文爲白俊遙原創文章,轉載無需和我聯繫,但請註明來自白俊遙博客http://www.baijunyao.com