2017年6月19日18:51:53php
架構:
1.ThinkPHP5.0應用基於MVC(模型-視圖-控制器)的方式來組織。
2.MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分紅三個核心部件:模型(M)、視圖(V)、控制器(C),它們各自處理本身的任務。
3.傳統的訪問方法:http://serverName/index.php(或者其它應用入口文件)/模塊/控制器/操做/參數/值…
4.入口文件
用戶請求的PHP文件,負責處理一個請求(注意,不必定是URL請求)的生命週期,最多見的入口文件就是index.php,
有時候也會爲了某些特殊的需求而增長新的入口文件,例如給後臺模塊單獨設置的一個入口文件admin.php或者一個控制器程序入口think都屬於入口文件。
5.應用
應用在ThinkPHP中是一個管理系統架構及生命週期的對象,由系統的 \think\App類完成,應用一般在入口文件中被調用和執行,具備相同的應用目錄(APP_PATH)的應用咱們認爲是同一個應用,但一個應用可能存在多個入口文件。
應用具備本身獨立的配置文件、公共(函數)文件。
6.模塊
一個典型的應用是由多個模塊組成的,這些模塊一般都是應用目錄下面的一個子目錄,每一個模塊都有本身獨立的配置文件、公共文件和類庫文件。
7.5.0支持單一模塊架構設計,若是你的應用下面只有一個模塊,那麼這個模塊的子目錄能夠省略,而且在應用配置文件中修改:
8.控制器
每一個模塊擁有獨立的MVC類庫及配置文件,一個模塊下面有多個控制器負責響應請求,而每一個控制器其實就是一個獨立的控制器類。
控制器主要負責請求的接收,並調用相關的模型處理,並最終經過視圖輸出。嚴格來講,控制器不該該過多的介入業務邏輯處理。
9.事實上,5.0中控制器是能夠被跳過的,經過路由咱們能夠直接把請求調度到某個模型或者其餘的類進行處理。
10.操做
一個控制器包含多個操做(方法),操做方法是一個URL訪問的最小單元。
1.操做方法能夠不使用任何參數,若是定義了一個非可選參數,則該參數必須經過用戶請求傳入,若是是URL請求,則一般是$_GET或者$_POST方式傳入。
2.模型
模型類一般完成實際的業務邏輯和數據封裝,並返回和格式無關的數據。
模型類並不必定要訪問數據庫,並且在5.0的架構設計中,只有進行實際的數據庫查詢操做的時候,纔會進行數據庫的鏈接,是真正的惰性鏈接。
ThinkPHP的模型層支持多層設計,你能夠對模型層進行更細化的設計和分工,例如把模型層分爲邏輯層/服務層/事件層等等。
3.視圖
控制器調用模型類後返回的數據經過視圖組裝成不一樣格式的輸出。視圖根據不一樣的需求,來決定調用模板引擎進行內容解析後輸出仍是直接輸出。
視圖一般會有一系列的模板文件對應不一樣的控制器和操做方法,而且支持動態設置模板目錄。
4.驅動
系統不少的組件都採用驅動式設計,從而能夠更靈活的擴展,驅動類的位置默認是放入核心類庫目錄下面,也能夠從新定義驅動類庫的命名空間而改變驅動的文件位置。
5.行爲
行爲(Behavior)是在預先定義好的一個應用位置執行的一些操做。相似於AOP編程中的「切面」的概念,給某一個切面綁定相關行爲就成了一種類AOP編程的思想。因此,行爲一般是和某個位置相關,行爲的執行時間依賴於綁定到了哪一個位置上。
6.命名空間
ThinkPHP5採用了PHP的命名空間進行類庫文件的設計和規劃,而且符合PSR-4的自動加載規範。數據庫
總結:編程
TP5.0架構總覽,都是一些概念性的東西,MVC更加明顯,驅動和行爲理解的仍是不夠好。設計模式