溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

thinkphp的目錄結(jié)構(gòu)設(shè)計(jì)經(jīng)驗(yàn)總結(jié)

發(fā)布時(shí)間:2020-07-20 15:34:18 來(lái)源:網(wǎng)絡(luò) 閱讀:389 作者:帥白123 欄目:web開發(fā)

用thinkphp開發(fā)了好些項(xiàng)目了;最近準(zhǔn)備抽空寫一些經(jīng)驗(yàn)總結(jié);

希望能給剛開始接觸tp的童鞋們提供一些開發(fā)的方案;少走一些彎路;少踩一些坑;

這些絕對(duì)都是些精華干貨;耐著性子閱讀;相信收貨大大的;

可以結(jié)合git項(xiàng)目對(duì)照研究:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

先從thinkphp的目錄架構(gòu)開始吧;


thinkbjy 白俊遙博客
├─Application 項(xiàng)目邏輯目錄
│  ├─Common 公共模塊
│  │  ├─Common  公共函數(shù)目錄
│  │  │  ├─functioin.php 公共函數(shù)php文件
│  │  ├─Conf  公共配置文件目錄
│  │  │  ├─config.php  tp的配置 用于覆蓋框架默認(rèn)配置項(xiàng)
│  │  │  ├─db.php  數(shù)據(jù)庫(kù)配置 用戶名 密碼等
│  │  │  ├─webconfig.php  項(xiàng)目的配置;網(wǎng)站名;是否開啟網(wǎng)站等
│  │  ├─Controller  公共控制器目錄 
│  │  │  ├─BaseController.class.php 應(yīng)用最基礎(chǔ)的控制器
│  │  │  ├─HomeBaseController.class.php  Home基礎(chǔ)控制器繼承BaseController
│  │  │  ├─AdminBaseController.class.php  Admin基礎(chǔ)控制器繼承BaseController
│  │  │  ├─UserBaseController.class.php  User基礎(chǔ)控制器繼承BaseController
│  │  │  ├─...
│  │  ├─Model  公共模型目錄
│  │  │  ├─BaseModel.class.php  應(yīng)用最基礎(chǔ)的Model
│  │  │  ├─ArticleModel.class.php 文章model  繼承BaseModel
│  │  │  ├─UserModel.class.php  用戶model 繼承BaseModel
│  │  │  ├─...
│  │  ├─Tag  公共標(biāo)簽?zāi)夸?│  │  │  ├─My.class.php  自定義的標(biāo)簽庫(kù)
│  │  │  ├─...
│  ├─Home  Home模塊
│  │  ├─Controller  Home控制器目錄 繼承HomeBaseController
│  │  │  ├─ArticleController.class.php 文章控制器目錄  
│  │  │  ├─IndexController.class.php  首頁(yè)控制器
│  │  │  ├─ ...  
│  ├─Admin  結(jié)構(gòu)同Home
│  ├─User  結(jié)構(gòu)同Home
├─Public 資源文件目錄
│  ├─install      安裝引導(dǎo)目錄
│  ├─statics      靜態(tài)資源目錄
│  │  ├─bootstrap bootstrap框架
│  │  ├─ueditor   ueditor編輯器
│  │  ├─js        jquery等第三方j(luò)s存放的目錄
│  │  ├─css       animate.css等第三方css目錄
│  │  ├─ ...      
├─Template 視圖文件目錄
│  ├─Public  公共目錄
│  │  ├─js  公共js目錄
│  │  │  ├─base.js 全站都引用的js文件
│  │  │  ├─ ...  
│  │  ├─css  公共css目錄
│  │  │  ├─base.css 全站都引用的css文件  
│  │  │  ├─ ...  
│  │  ├─p_w_picpaths 公共圖片目錄 
│  │  ├─public_head.html  全站通用的公共頭部
│  │  ├─public_foot.html  全站通用的公共底部
│  │  ├─...  
│  ├─Home  前臺(tái)Home視圖目錄   
│  │  ├─Public 前臺(tái)Home的公共目錄
│  │  │  ├─js  home下調(diào)用的js文件目錄
│  │  │  ├─css  home下調(diào)用的css文件目錄
│  │  │  ├─p_w_picpaths  home下調(diào)用的圖片文件目錄
│  │  ├─Index  首頁(yè)文件目錄
│  │  │  ├─index.html 首頁(yè)  
│  │  │  ├─ ...
│  ├─Admin  同Home
│  ├─User   同Home
├─Upload  公共上傳目錄
│  ├─p_w_picpaths   上傳的圖片目錄
│  │  ├─avatar  頭像目錄
│  │  ├─ueditor ueditor編輯器上傳的圖片目錄
│  │  │ ...
│  │ ...
├─Runtime 運(yùn)行時(shí)目錄
├─ThinkPHP 框架系統(tǒng)目錄

/Application/Common/Common/function.php 這個(gè)作為常用公共函數(shù)文件;

平時(shí)經(jīng)常用的自定義函數(shù)都可以放里面;

比如說(shuō) 之前寫過(guò)的p函數(shù) 以符合人類閱讀的方式打印php數(shù)組

然后還建議寫:判斷用戶是否登陸的函數(shù)、獲取當(dāng)前登陸用戶id的函數(shù)、上傳函數(shù)、圖片處理函數(shù)、驗(yàn)證碼函數(shù)、分頁(yè)函數(shù)等等;


/Application/Common/Conf 公共配置項(xiàng)目錄下 我建議至少創(chuàng)建如下3個(gè)文件

config.php、db.php、webconfig.php 為什么要?jiǎng)?chuàng)建3個(gè)配置項(xiàng)文件呢?我來(lái)詳細(xì)的講解這三個(gè)文件的作用;

config.php里面都是系統(tǒng)的配置項(xiàng);我們這個(gè)文件主要是用來(lái)覆蓋框架默認(rèn)的配置項(xiàng);這個(gè)文件好理解些;

db.php 數(shù)據(jù)庫(kù)的賬號(hào)密碼等;單獨(dú)放一個(gè)文件是因?yàn)楹芏鄷r(shí)候;這個(gè)文件需要根據(jù)應(yīng)用安裝的時(shí)候填寫的數(shù)據(jù)庫(kù)賬號(hào)密碼生成的文件;

webconfig.php 這個(gè)文件獨(dú)立出來(lái)的原因同上;


/Application/Common/Controller 公共控制器目錄

這個(gè)目錄下一定要建一個(gè)BaseController.class.php 為了開發(fā)維護(hù)的方便 我們開發(fā)要盡量避免改動(dòng)框架的文件;

所以呢;為了不改動(dòng)框架的Controller.class.php 我們自己建一個(gè)BaseController以后所有的Controller都繼承它;

這樣只要在BaseController里面寫的方法;所有的控制器都繼承到了;都可以用到;

但是呢;我們開發(fā)的項(xiàng)目可能會(huì)比較復(fù)雜;只有一個(gè)BaseController會(huì)比較雜亂;所以我們還可以根據(jù)業(yè)務(wù)需求再建AdminBaseController.class.php  可以在__construct構(gòu)造函數(shù)中判斷如果不是管理員;禁止訪問(wèn);我們只需要所有把所有需要有管理員權(quán)限才可訪問(wèn)的控制器全部繼承AdminBaseController; 這樣這些控制器就不需要每個(gè)都判斷是否是管理員了;

具體可以看 thinkphp集成系列之rbac的升級(jí)版auth權(quán)限管理系統(tǒng)demo

UserBaseController.class.php 等其他xxBaseController同樣道理;比如說(shuō)用戶的個(gè)人中心必須是登陸狀態(tài)才可訪問(wèn)等等;


/Application/Common/Model 公共模型目錄

這個(gè)目錄一定要建一個(gè)BaseModel.class.php 為什么呢?

巴拉巴拉。。。

巴拉巴拉。。。

好吧;我在組織語(yǔ)言的時(shí)候;發(fā)現(xiàn)越寫越多;所以我準(zhǔn)備單獨(dú)開一片文章來(lái)寫B(tài)aseModel的問(wèn)題;

傳送門: thinkphp的model模型的設(shè)計(jì)經(jīng)驗(yàn)總結(jié)


/Application/Common/Tag 公共標(biāo)簽?zāi)夸?/p>

為了方便開發(fā);我們還是必須要建一個(gè)自定義的標(biāo)簽庫(kù);My.class.php

什么是標(biāo)簽庫(kù)呢?我們會(huì)發(fā)現(xiàn)在模板中tp內(nèi)置好多標(biāo)簽很好用;比如說(shuō)foreach、volist、eq;

官方的文檔傳送門:內(nèi)置標(biāo)簽

什么?不知道怎么自定義標(biāo)簽? 好吧;再來(lái)個(gè)傳送門:thinkphp自定義模板標(biāo)簽


/Public  資源文件目錄

可以把boostrap、jquery等第三方插件扔到這里面


/Template 視圖目錄

建議把每個(gè)模塊的View都移到這個(gè)目錄中集中管理;不然開發(fā)的時(shí)候各種點(diǎn)目錄切換;那酸爽;誰(shuí)用誰(shuí)知道;

/Template/default/Home/Public/js/base.js 和/Template/default/Home/Public/css/base.css 強(qiáng)烈建議全站都引用;里面寫一些全站都可以用的樣式或函數(shù);比如css的reset;其他的看上面的目錄就可以看明白的;就不多啰嗦了;


/Runtime 運(yùn)行時(shí)目錄

和Template一樣;建議都移到最外層;方便我們刪除緩存;


好吧;認(rèn)真寫博客真的很耗時(shí);這篇博客寫了整整3個(gè)小時(shí);但愿能幫到童鞋們;

thinkphp的目錄結(jié)構(gòu)設(shè)計(jì)經(jīng)驗(yàn)總結(jié)

本文為白俊遙原創(chuàng)文章,轉(zhuǎn)載無(wú)需和我聯(lián)系,但請(qǐng)注明來(lái)自白俊遙博客http://www.baijunyao.com                        


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI