小編給大家分享一下thinkPHP5.0框架整體架構(gòu)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)公司長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為橋東企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、做網(wǎng)站,橋東網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。具體如下:
ThinkPHP5.0應(yīng)用基于MVC(模型-視圖-控制器)的方式來組織。
MVC是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型(M)、視圖(V)、控制器(C),它們各自處理自己的任務(wù)。
5.0的URL訪問受路由決定,如果關(guān)閉路由或者沒有匹配路由的情況下,則是基于:
http://serverName/index.php(或者其它應(yīng)用入口文件)/模塊/控制器/操作/參數(shù)/值...
下面的一些概念有必要做下了解,可能在后面的內(nèi)容中經(jīng)常會被提及。
入口文件
用戶請求的PHP文件,負責(zé)處理一個請求(注意,不一定是URL請求)的生命周期,最常見的入口文件就是index.php
,有時候也會為了某些特殊的需求而增加新的入口文件,例如給后臺模塊單獨設(shè)置的一個入口文件admin.php
或者一個控制器程序入口think
都屬于入口文件。
應(yīng)用
應(yīng)用在ThinkPHP中是一個管理系統(tǒng)架構(gòu)及生命周期的對象,由系統(tǒng)的\think\App
類完成,應(yīng)用通常在入口文件中被調(diào)用和執(zhí)行,具有相同的應(yīng)用目錄(APP_PATH
)的應(yīng)用我們認為是同一個應(yīng)用,但一個應(yīng)用可能存在多個入口文件。
應(yīng)用具有自己獨立的配置文件、公共(函數(shù))文件。
模塊
一個典型的應(yīng)用是由多個模塊組成的,這些模塊通常都是應(yīng)用目錄下面的一個子目錄,每個模塊都自己獨立的配置文件、公共文件和類庫文件。
5.0支持單一模塊架構(gòu)設(shè)計,如果你的應(yīng)用下面只有一個模塊,那么這個模塊的子目錄可以省略,并且在應(yīng)用配置文件中修改:
'app_multi_module' => false,
控制器
每個模塊擁有獨立的MVC類庫及配置文件,一個模塊下面有多個控制器負責(zé)響應(yīng)請求,而每個控制器其實就是一個獨立的控制器類。
控制器主要負責(zé)請求的接收,并調(diào)用相關(guān)的模型處理,并最終通過視圖輸出。嚴(yán)格來說,控制器不應(yīng)該過多的介入業(yè)務(wù)邏輯處理。
事實上,5.0中控制器是可以被跳過的,通過路由我們可以直接把請求調(diào)度到某個模型或者其他的類進行處理。
5.0的控制器類比較靈活,可以無需繼承任何基礎(chǔ)類庫。
一個典型的Index控制器類如下:
namespace app\index\controller; class Index { public function index() { return 'hello,thinkphp!'; } }
操作
一個控制器包含多個操作(方法),操作方法是一個URL訪問的最小單元。
下面是一個典型的Index控制器的操作方法定義,包含了兩個操作方法:
namespace app\index\controller; class Index { public function index() { return 'index'; } public function hello($name) { return 'Hello,'.$name; } }
操作方法可以不使用任何參數(shù),如果定義了一個非可選參數(shù),則該參數(shù)必須通過用戶請求傳入,如果是URL請求,則通常是$_GET或者$_POST方式傳入。
模型
模型類通常完成實際的業(yè)務(wù)邏輯和數(shù)據(jù)封裝,并返回和格式無關(guān)的數(shù)據(jù)。
模型類并不一定要訪問數(shù)據(jù)庫,而且在5.0的架構(gòu)設(shè)計中,只有進行實際的數(shù)據(jù)庫查詢操作的時候,才會進行數(shù)據(jù)庫的連接,是真正的惰性連接。
ThinkPHP的模型層支持多層設(shè)計,你可以對模型層進行更細化的設(shè)計和分工,例如把模型層分為邏輯層/服務(wù)層/事件層等等。
視圖
控制器調(diào)用模型類后返回的數(shù)據(jù)通過視圖組裝成不同格式的輸出。視圖根據(jù)不同的需求,來決定調(diào)用模板引擎進行內(nèi)容解析后輸出還是直接輸出。
視圖通常會有一系列的模板文件對應(yīng)不同的控制器和操作方法,并且支持動態(tài)設(shè)置模板目錄。
驅(qū)動
系統(tǒng)很多的組件都采用驅(qū)動式設(shè)計,從而可以更靈活的擴展,驅(qū)動類的位置默認是放入核心類庫目錄下面,也可以重新定義驅(qū)動類庫的命名空間而改變驅(qū)動的文件位置。
行為
行為(Behavior)是在預(yù)先定義好的一個應(yīng)用位置執(zhí)行的一些操作。類似于AOP編程中的“切面”的概念,給某一個切面綁定相關(guān)行為就成了一種類AOP編程的思想。所以,行為通常是和某個位置相關(guān),行為的執(zhí)行時間依賴于綁定到了哪個位置上。
要執(zhí)行行為,首先要在應(yīng)用程序中進行行為偵聽,例如:
// 在app_init位置偵聽行為 \think\Hook::listen('app_init');
然后對某個位置進行行為綁定:
// 綁定行為到app_init位置 \think\Hook::add('app_init','\app\index\behavior\Test');
一個位置上如果綁定了多個行為的,按照綁定的順序依次執(zhí)行,除非遇到中斷。
命名空間
ThinkPHP5采用了PHP的命名空間進行類庫文件的設(shè)計和規(guī)劃,并且符合PSR-4
的自動加載規(guī)范。
以上是“thinkPHP5.0框架整體架構(gòu)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞名稱:thinkPHP5.0框架整體架構(gòu)的示例分析-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.rwnh.cn/article40/ceceho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、定制網(wǎng)站、手機網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、定制開發(fā)、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容