教你快速打造PHP MVC框架

簡介php

MVC框架在如今的開發中至關流行,不論你使用的是JAVA,C#,PHP或者IOS,你確定都會選擇一款框架。雖然不能保證100%的開發語言都會使用框架,可是在PHP社區當中擁有最多數量的MVC框架。今天你或許還在使用Zend,明天你換了另外一個項目也許就會轉投Yii,Laravel或者CakePHP的懷抱。若是你剛開始使用一種框架,當你看它的源碼的時候你會以爲一頭霧水,是的,這些框架都很複雜。由於這些流行的框架並非短期以內就寫出來就發行的,它們都是通過一遍又一遍的編寫和測試加上不斷的更新函數庫纔有了今天得模樣。因此兄弟連PHP培訓認爲,瞭解MVC框架的設計核心理念是頗有必要的,否則你就會感受在每一次使用一個新的框架的時候一遍又一遍的從頭學習。css

 

因此最好的理解MVC的方法就是寫一個你本身的MVC框架。在這篇文章中,兄弟連小編將會向你展現如何構建一個本身的MVC框架。前端

 

MVC架構模式web

M: Model-模型數據庫

V: View-視圖服務器

C: Controller-控制器架構

 

MVC的關鍵概念就是從視圖層分發業務邏輯。首先解釋如下HTTP的請求和相應是如何工做的。例如,咱們有一個商城網站,而後咱們想要添加一個商品,那麼最簡單的一個URL就會是像下面這個樣子:app

 

http://lampbrother.net/index.php?p=admin&c=goods&a=add框架

http://lampbrother.net就是主域名或者基礎URL;frontend

 

p=admin 意味着處在管理模塊,,或者是系統的後臺模塊。同時咱們確定也擁有前臺模塊,前臺模塊供全部用戶訪問(本例中, 它是p=public)

c=goods&a=add 意思是URL請求的是goods控制器裏的add方法。

 

前臺控制器設計

在上面的例子中index.php中是什麼?在PHP框架中它被稱爲入口文件。這個文件一般都被命名爲index.php,固然你也能夠給它別的命名。這個index.php的最主要的做用就是做爲HTTP請求的惟一入口文件,這樣不管你的URL請求什麼資源,它都必須經過這個Index.php來請求。你可能要問爲何,它是如何作到的?PHP中的前端控制器用到了Apache服務器的分佈式配置.htaccess實現的。在這個文件中,咱們可使用重寫模塊告訴Apache服務器重定向到咱們的index.php入口文件,就像下面這樣:

 

<IfModule mod_rewrite.c>

   Options +FollowSymLinks

   RewriteEngine on

   # Send request via index.php

   RewriteCond %{REQUEST_FILENAME} !-f

   RewriteCond %{REQUEST_FILENAME} !-d

   RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

 

這個配置文件很是有用,還有當你重寫這個配置文件的時候你不須要重啓Apache。可是當你修改Apache的其餘配置文件的時候你都須要重啓Apache才能生效,由於Apache只有在啓動的時候纔會讀取這些配置文件。

 

同時,index.php還會進行框架的初始化而且分發路由請求給對應的控制器和方法。

 

咱們的MVC目錄結構

如今讓咱們開始建立咱們的框架目錄結構。咱們你能夠隨便先創建一個文件夾,命名爲你項目的名稱,好比:/bestshop。在這個文件夾下你須要創建下面的文件夾:

 

/application-存放web應用程序目錄

 

/framework-存放框架文件目錄

 

/public-存放全部的公共的靜態資源,好比HTML文件,CSS文件和jJS文件。

 

index.php-惟一入口文件

 

而後在application文件夾下再創建下一級的目錄

 

/config-存放應用的配置文件

 

/controllers-應用的控制器類

 

/model-應用的模型類

 

/view-應用的視圖文件

 

如今在application/controllers文件夾下,咱們還須要建立兩個文件夾,一個frontend,一個backend:

 

一樣的,在view下也創建frontend和backend文件夾:

 

就像你看到的,在application的controllers和view下面創建了backen和frontend文件夾,就像咱們的用用有前臺和後臺功能同樣。可是爲何不在model下也這樣作呢?

 

Well, the reason here is, normally for a web app:是由於通常在咱們的應用中,前臺和後臺實際上是能夠看作是兩個「網站的」,可是CRUD操做的是同一個數據庫,這就是問什麼管理員更新了貨物的價格的時候,前臺用戶能夠立刻看到價格的變化,由於前臺和後臺是共享一個數據庫(表)的。因此在model中不必再去創建兩個文件夾。

 

:如今讓咱們回到framework文件夾中,一些框架的文件夾命名會用框架的名字命名,好比"symfony"。在framework中讓咱們快速創建下面的子目錄:

 

/core-框架核心文件目錄

 

/database-數據庫目錄(好比數據庫啓動類)

 

/helpers-輔助函數目錄

 

/libraries-類庫目錄

 

如今進入public文件夾,創建下面的目錄:

 

/css-存放css文件

 

/images-存放圖片文件

 

/js-存放js文件

 

/uploads-存放上傳的文件

 

OK。到目前爲止這就是咱們這個迷你的MVC框架的目錄結構了!怎麼樣,學會了嗎?

相關文章
相關標籤/搜索