閱讀時長:10分鐘php
技術預備:PHP基礎語法html
本章咱們主要講解ThinkPHP的基礎概況和Web服務端開發中經常使用的MVC結構。前端
還記得咱們上一章是怎麼輸出Helloworld的嗎?程序員
沒錯,就是在瀏覽器中輸入了 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
是一樣的效果。
在MVC架構中,控制器通常只負責以下功能:
在ThinkPHP框架中創建控制器只須要在對應的模塊中的controller模塊中新建一個類。
如上圖則表示在index模塊中創建了Index控制器。
而Index控制器下的index()方法即表明一個Action,在API開發中也就是一個接口,能夠經過配置框架的路由URL進行綁定。
須要注意的是,Action中其實不該該出現太多的邏輯操做,Action應該只是做爲模型層(Model)和視圖層(View)的一個調用者,實際的邏輯操做應該是放到模型層去進行處理,更復雜的邏輯應該放在服務層(Service)去進行處理,這種分層的思想就是所謂的面向切面編程(AOP)。
這樣作的好處就是當某個通用操做(如用戶登陸、計算活動金額)
發生變化的時候,只須要在模型中修改代碼,並不會影響到調用模型的控制器代碼。
而若是把邏輯都放在控制器中,那麼一旦須要修改代碼的時候,就要把全部關聯到的控制器代碼所有修改一遍。
趙童鞋就見過把全部邏輯放在控制器,徹底不用模型的項目,寫的時候不須要考慮分層,不須要考慮迭代,爽得很。
可是當需求發生變動的時候,維護的程序員就只想XXOO了。。
模型定義通常爲一個模型類對應一個數據表。
服務端開發中大部分的邏輯操做其實就是在Select/Create/Update/Delete各類數據表。
一些簡單的邏輯操做,如:獲取ID爲75的文章數據。應該放在模型中封裝爲一個方法,在控制器層去進行調用。
ThinkPHP框架爲模型提供了許多便捷功能,如:隱藏字段、字段修改器、分頁查詢、定義關聯關係。
咱們會在後面再來詳細介紹模型與這些功能。
視圖層就是輸出對應的HTML代碼。
在框架中可使用模板引擎(如:ThinkPHP自帶引擎、Smarty引擎)
來進行變量替換。
可是如今服務端比較流行的都是API開發,經過API傳遞數據與前端進行交互,比較少使用視圖來進行頁面渲染。
許多的PHP框架中都具備路由這個功能,甚至在Vue、React之類的前端框架中也加入了路由這個概念。
路由其實就是咱們的訪問URL和控制器中的Action作了一個映射,如上面提到的:
http://localhost/tp5_demo/public/index/index/index
就是訪問index模塊中的Index控制器下的index()方法。
咱們能夠來嘗試一下,在Index控制器中加入hello()方法:
訪問URL: http://localhost/tp5_demo/public/index/index/hello
能夠看到,成功的輸出了
「Here is hello action」。
這個URL的實際意思就是訪問index模塊下的Index控制器中的hello方法。
路由還有許多強大的功能,咱們將會在後續的章節中進行介紹。
本章咱們介紹瞭如今流行的MVC三大件的基本用途,以及路由的概念。
童鞋們應該大概掌握了一個後端接口的工做流程,也就是:路由->控制器->模型(->視圖)。
下一章節開始咱們就會詳細的介紹各組件的實際用法。
不知道童鞋們有沒有發現本篇文章中有個bug呢?
沒錯,咱們在入口文件時說過,當訪問 http://localhost/tp5_demo/public/
Apache會自動訪問到public目錄下的index.php文件。
可是爲何訪問 http://localhost/tp5_demo/public/index/index/hello
不須要在URL中帶上這個文件呢?
咱們能夠在public目錄下找到一個.htaccess文件,就是它幫咱們隱藏掉了index.php。
如今把其中的代碼屏蔽掉,並重啓Apache。
再次訪問 http://localhost/tp5_demo/public/index/index/index。
瀏覽器會返回404。
而若是咱們訪問 http://localhost/tp5_demo/public/index.php/index/index/index。
頁面成功輸出了Helloworld。
知道了入口文件規則以後,童鞋們有沒有以爲每次訪問接口,須要輸入項目路徑很麻煩呢?咱們接下來配置一個本地虛擬域名。
首先編輯Apache目錄下的httpd-vhosts.conf文件,輸入如下代碼:
而後編輯咱們本機的hosts文件,Windows10下的路徑爲:
C:/Windows/System32/drivers/etc/hosts
輸入如下代碼:
127.0.0.1 tp5.com
重啓一下咱們xampp的Apache,而後在瀏覽器中輸入 tp5.com ,若是能看到依舊輸出Helloworld,那就表明配置成功了。(配置出現問題的童鞋可在公衆號後臺給趙童鞋留言哦)
配置完畢後,咱們之後只須要訪問tp5.com這個地址,就能直接訪問綁定好的項目路徑。
----- End -----
更多好文
請掃描下面二維碼
歡迎關注~