寫博客,不容易,你們的評論和轉載,就是我的動力,
但請注明出處,隔壁老王的開發園:http://www.cnblogs.com/titibili
2016年1月31日 18:53 作者:Ygirl
Model(模型) View(視圖) Controller(控制器)
以前大部分應用程序通過過程化模式創建
然而,代碼混疊
MVC優勢:
MVC開發環境:
編輯器: EmEditor
Php環境:運用WampServe集成軟件安裝配置而成
下載地址:http://www.wampserver.com/en/
實例一
形如下列文件命名:
一 創建第一個控制器文件:
1.A另存為文件,窗口下方更改換行方式為僅LF(UNIX)(基於LF開發),更改編碼方式為UTF-8無簽名。
2.a.創建類(用class關鍵字)
b. 通過控制器發出show()指令
二 創建第一個模型文件(方法形同創建控制器文件,鍵入以下代碼)
三 創建第一個視圖文件(方法形同創建控制器文件,鍵入以下代碼)
MVC運行流程
1瀏覽者: 調用控制器,發出指令
2.控制器: 按指令選取一個合適的模型
3,.模型: 按控制器指令取相應數據
4.控制器: 按指令選取相應視圖
5.視圖: 把步驟3取到的數據按用戶需求顯示
四 新創建一個test.php文件
MVC運行流程
1瀏覽者: 調用控制器,發出指令
2.控制器: 按指令選取一個合適的模型
3,.模型: 按控制器指令取相應數據
4.控制器: 按指令選取相應視圖
5.視圖: 把步驟3取到的數據按用戶需求顯示
a使用require_once()引入上面創建的三個文件
b實例化控制器文件(使用new創建名為testController的對象,並賦值給一個變量,即創建了控制器)
c執行控制器里面的方法
以下完成了MVC運行流程的第一步
再回到控制器文件,(按照MVC運行流程依次執行)
a. 控制器選取模型 $testModel=new testModel();
b,.模型取得相應數據 $data=$testModel->get();(將方法取得的數據賦值給data變量)
c.控制器選取視圖 $testView=new testView();
d.顯示數據 $testView->display($data);
配置測試網址
測試結果:
總結:
控制器的作用是調用模型,並調用視圖,將模型產生的數據傳遞給視圖,並讓相關視圖去顯示。
模型的作用是獲取數據並處理返回的數據。
視圖的作用是將取得的數據進行組織、美化,並最終向用戶終端輸出。
目錄規范參考:
入口程序:又稱單一入口機制,指在一個Web應用程序中,所有請求都是指向一個腳本文件(如某一網站頁面都是index.php?XXXX形式)所有對使用程序的訪問都必須通過這個入口。
好處:訪問限制只需限制一個文件;
使得MVC得以實現。
(多個控制器,若每個程序都對每個控制器進行實例化,進行調用,再使用控制器的方法,會使得一個網站會使用很多的訪問文件去實例化,維護麻煩;相反,使用單一index.php去調用控制器,再讓控制器去調用M、V模塊,維護起來方便。)
實例二
建立一個控制器調用函數C
//多個控制器,里面包含多種方法,給定不同參數去調用某個控制器、方法即可。
function C($name, $method){
require_once('/libs/Controller/'.$name.'Controller.class.php');//引入控制器文件
//$testController=new testController();實例化
//$testController->show();使用方法
eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');//eval()將字符轉化為可執行的php語句;$testController替換為$obj, test替換為’.name.’
}
建立一個模型調用函數M
//模型的方法自帶參數,不封裝使用起來更為靈活;控制器隨引用方法,但不允許有自己的參數
function M($name){
require_once('/libs/Model/'.$name.'Model.class.php');
eval('$obj = new '.$name.'Model();');
return $obj;//返回實例化產生的對象
}
建立一個視圖調用函數V
function V($name){
require_once('/libs/View/'.$name.'View.class.php');
eval('$obj = new '.$name.'View();');
return $obj;
}
創建一個入口文件index.php
a. 統一入口文件為首的url格式(如index.php?controller=控制器名&method=方法名)
b. 在入口文件里使用安全的方式接收傳遞來的控制器名和方法名
其中使用的daddslashes()函數,在function.php中定義
//對非法字符進行轉義,因為要對GET()方法的取得進行過濾
function daddslashes($str){
//addslashes()對單引號等特殊字符進行轉義
//判斷當前打開狀態,打開時返回true,並自動進行轉義,沒有打開則使用addslashes()
return (!get_magic_quotes_gpc())?addslashes($str):$str;
}
function.php文件如下:
testController.class.php文件修改為:
配置測試網址(url形式 index.php?controller=控制器名&method=方法名)
測試結果:
安裝WampServe
下載地址:http://www.wampserver.com/en/
安裝完在瀏覽器上鍵入localhost進行測試
打開WS,左鍵單擊右窗口下方的圖標,啟動所有服務;右鍵圖標,可進行語言設置。
www目錄是WS默認的存放網頁文件夾
自定義網站根目錄:
更改目錄:單擊Apache—httpd.conf,ctrl+F進入查找,輸入documentroot,找到原先的存放目錄,更改為(如E;/Demo),在下拉文件,找到另一處相同目錄,同樣更改為(如E;/Demo)
左鍵單擊WS圖標重新啟動所有服務
寫入一個php文件到新指定的存放目錄底下,localhost/php文件夾名,測試出來結果即成功更改網頁文件夾存放目錄
WS多站點配置:
WS—wamp—bin—apache—apache2.4.9—conf—extra—httpd.vhost
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "c:/Apache24/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "F:/wamp/www/Demo/test01"
ServerName test01.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "F:/wamp/www/Demo/test02"
ServerName test02.com
</VirtualHost>
/*************************Finish!***************************/
寫博客,不容易,你們的評論和轉載,就是我的動力,
但請注明出處,隔壁老王的開發園:http://www.cnblogs.com/titibili
真心感謝!~
(更多精彩,微信關注公眾號:猿帶馬)