寫一個屬於自己的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的模板程式碼