首頁 > php框架 > ThinkPHP > 主體

你必須了解的ThinkPHP框架入門知識

silencement
發布: 2019-11-27 18:20:35
轉載
4387 人瀏覽過

你必須了解的ThinkPHP框架入門知識

本章我們主要說明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模組中新建一個類別。

你必須了解的ThinkPHP框架入門知識

如上圖則表示在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框架入門知識

#六、總結

#本章我們介紹了現在流行的MVC三大件的基本用途,以及路由的概念。

童鞋們應該大概掌握了一個後端介面的工作流程,也就是:路由->控制器->模型(->視圖)。

以上是你必須了解的ThinkPHP框架入門知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.im
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板