1. 程式人生 > >寫一個屬於自己的PHP的MVC框架(一)

寫一個屬於自己的PHP的MVC框架(一)

最近想做個PHP的個人部落格作為學習用,但是發現儘管把PHP函式用得很熟悉了,按照常規的辦法,寫一個頁面處理一個請求,僅僅一個部落格就可能有很多個頁面,而且php程式碼和html程式碼都結合的非常緊密,如果想要實現更換面板的功能,就顯得非常無力。在網上找了好多framework框架,但似乎又要開始學習新的一門知識,現在還沒有用來做具體開發,所以放棄了使用這些複雜的東西。


這裡寫這篇文章,其目的能做下筆記,也能為大多數困惑的PHP愛好者提供一些個人的想法。


首先吧,MVC就是model,view,controller


model:就是資料模型吧,我是這樣理解的,不同的理解寫不同的程式碼,如果你有好的理解也不要被我誤導才好,說白了,就是跟資料有關的一些類。

view:翻譯過來叫檢視,也可以理解為顯示,用來如何控制顯示的。

controller:控制器,通常一個頁面有好多型別的資料,比如說個人部落格吧,有博主資料,文章等等,控制器的工作就是把這些資料組織起來傳給檢視來顯示。


注意:這三個東西都是一些類


首先要搭建PHP網站的環境,讓它能夠實現單一入口,也就是所有瀏覽器的請求都指向index.php頁面


1,開啟apache的rewrite模組(這裡只考慮的apache,我想其他伺服器也是差不多)

首先找到apache的配置檔案,用記事本開啟它

這裡是D:\AppServ\Apache2.2\conf\httpd.conf

找到#LoadModule rewrite_module modules/mod_rewrite.so這句話,然後把前邊的#號去掉

即LoadModule rewrite_module modules/mod_rewrite.so

然後再找到你網站的虛擬目錄配置項,把AllowOverride no改為AllowOverride All

然後重啟apache伺服器就可以了

這裡說的不明白的話,大家可以到網上找到相關資料

2,然後建立網站的目錄結構

根目錄的.htaccess檔案內容

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
</IfModule>


public目錄的.htaccess檔案內容

<IfModule mod_rewrite.c>
    Options -Multiviews
    RewriteEngine On
    Options -Indexes
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>


<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>


public目錄下的index.php檔案就是我們網站的單一入口檔案了

--------------------------------------------------------------------------------------

app資料夾,可以理解為你網站的具體內容

app-->controller:存放你的控制器類

app->model:存放你的資料模型類


app->view:存放你的模板之類的東西,我這裡因為把smarty整合進來了,所以就長這樣


其中default資料夾表示預設的主題風格的模板

其index.html就是一些關於smarty的模板程式碼