您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關ThinkPHP基礎概況和Web服務端開發中常用的MVC結構示例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
ThinkPHP的基礎概況和Web服務端開發中常用的MVC結構。
一、入口文件
在瀏覽器中輸入了 http://localhost/tp5_demo/public/
這個URL表示了訪問htdocs文件夾下的/tp5_demo/public/index.php文件,這是為什么呢,我們下面來一步步分解。
當我們輸入 http://localhost 的時候,Apache就會訪問其httpd.conf文件下指定的DocumentRoot路徑,在趙童鞋這里就是E:/xampp7/htdocs。
而在后面拼接/tp5_demo/public的意思就是訪問DocumentRoot路徑下的/tp5_demo/public文件夾。
那么最終為什么會定位到index.php文件呢?這是因為httpd.conf文件里有另一個屬性定義DirectoryIndex,這個屬性中就定義了index.php、index.html等文件作為入口文件。(啥?你說為啥沒圖?自己翻你們的httpd.conf文件去)
而在ThinkPHP中,如果沒有指定訪問地址,默認就會路由到index模塊下的Index控制器中的index()方法。
也就是說,輸入
http://localhost/tp5_demo/public/
http://localhost/tp5_demo/public/index/index/index
是同樣的效果。
二、控制器(Controller)
在MVC架構中,控制器一般只負責如下功能:
參數校驗
調用服務
調用模型
輸出結果
在ThinkPHP框架中建立控制器只需要在對應的模塊中的controller模塊中新建一個類。
如上圖則表示在index模塊中建立了Index控制器。
而Index控制器下的index()方法即代表一個Action,在API開發中也就是一個接口,可以通過配置框架的路由URL進行綁定。
需要注意的是,Action中其實不應該出現太多的邏輯操作,Action應該只是作為模型層(Model)和視圖層(View)的一個調用者,實際的邏輯操作應該是放到模型層去進行處理,更復雜的邏輯應該放在服務層(Service)去進行處理,這種分層的思想就是所謂的面向切面編程(AOP)。
這樣做的好處就是當某個通用操作(如用戶登錄、計算活動金額)發生變化的時候,只需要在模型中修改代碼,并不會影響到調用模型的控制器代碼。
而如果把邏輯都放在控制器中,那么一旦需要修改代碼的時候,就要把所有關聯到的控制器代碼全部修改一遍。
見過把所有邏輯放在控制器,完全不用模型的項目,寫的時候不需要考慮分層,不需要考慮迭代,爽得很。
三、模型(Model)
模型定義一般為一個模型類對應一個數據表。
服務端開發中大部分的邏輯操作其實就是在Select/Create/Update/Delete各種數據表。
一些簡單的邏輯操作,如:獲取ID為75的文章數據。應該放在模型中封裝為一個方法,在控制器層去進行調用。
ThinkPHP框架為模型提供了許多便捷功能,如:隱藏字段、字段修改器、分頁查詢、定義關聯關系。
我們會在后面再來詳細介紹模型與這些功能。
四、視圖(View)
視圖層就是輸出對應的HTML代碼。
在框架中可以使用模板引擎(如:ThinkPHP自帶引擎、Smarty引擎)來進行變量替換。
但是現在服務端比較流行的都是API開發,通過API傳遞數據與前端進行交互,比較少使用視圖來進行頁面渲染。
五、路由(Route)
許多的PHP框架中都具有路由這個功能,甚至在Vue、React之類的前端框架中也加入了路由這個概念。
路由其實就是我們的訪問URL和控制器中的Action做了一個映射,如上面提到的:
http://localhost/tp5_demo/public/index/index/index
就是訪問index模塊中的Index控制器下的index()方法。
我們可以來嘗試一下,在Index控制器中加入hello()方法:
感謝各位的閱讀!關于“ThinkPHP基礎概況和Web服務端開發中常用的MVC結構示例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。