mvc是軟件設計的一種結構(即模型、視圖、控制器)
本篇文章會通過一個簡易的webapp來介紹mvc,目錄結構如下:
mvcDemo
index.php
modules
UserModule.php
BlogModule.php
views
user
userPage.php
blog
blogPage.php
controllers
UserController.php
BlogController.ph
在以上的目錄結構中:
index.php
【入口文件】是一個入口文件,是一個唯一讓瀏覽器請求的腳步文件;
modules
【模型】用於提供數據並保存數據
views
【視圖】用於提供界面的顯示
controller
【控制器】用於協調模型和視圖
action控制器中定義的方法:
【action】是控制其中定義的方法,瀏覽器直接請求,url中以參數的形式傳遞
以下在項目的創建過程中慢慢的來講解mvc的工作模式,所有的過程都是在虛擬機環境下的centos6中完成的(該虛擬環境已經具備了lamp環境)
一、首先我們創建一個目錄mvcDemo用於存放該項目:
二、接下來我們進入mvcDemo目錄創建相應的文件和文件夾,如下:
以上視圖我們創建了index.php入口文件;modules模型文件夾;views視圖文件夾;controllers存放控制類的文件夾
三、進入controllers目錄,創建一個UserController.php和BlogController.php,如下:
編輯UserController.php和BlogController.php;分別寫入如下代碼:
UserController.php:
<?php
class UserController{
public function index(){
echo '這是user控制器的index方法';
}
}
BlogController.php:<?php
class BlogController{
public function index(){
echo '這是博客控制器的index方法';
}
}
四、返回上一級目錄,編輯index.php,如下:
<?php
//這是一個入口文件
//這是一個控制器
$c = $_GET['c']; //用於獲取url參數中傳過來的,具體的哪一個控制器
//包含控制器
include './controllers/'.$c.'Controller.php'; //將參數拼接爲我們要訪導入的類
//實例化一個對象
$className = $c.'Controller';
$controller = new $className();
//訪問方法名
$m = $_GET['m']; //用於獲取url參數中傳遞過來的,具體要訪問的哪一個方法
$controller->$m(); //執行該方法,返回相應的數據或視圖
保存後,訪問url【server/mvcDemo/?c=User&m=index】,在我的電腦上訪問返回如下結果,注意【我的電腦IP地址爲192.168.1.112;項目存放目錄爲mvcTest】可以看我我們正常訪問到了UserController類中的index方法。
在以上過程中我們已經通過了入口文件,訪問到了我們模型中的方法,並返回了相應的數據,接下來我們要通過模型,返回相應的視圖,展示給用戶:
五、進入views目錄,創建user和blog目錄
六、進入user目錄,創建一個index.php,並寫下如下代碼(一段簡單的htm):
<html>
<head>
<title>user</title>
</head>
<body>
<h1>this is user view</h1>
</body>
</html>
七、接下來進入controllers目錄,編輯我們創建好的UserController.php,加上如下代碼,將我們的視圖文件包含進來:
<?php
class UserController{
public function index(){
echo '這是user控制器的index方法';
include './views/user/index.php';
}
}
我們再次訪問url【server/mvcDemo/?c=User&m=index】,顯示如下:
可以看到我們剛纔寫的視圖文件正常執行,並顯示了
現在我們已經訪問入口文件,通過模型,訪問到了我們的視圖
接下來我們要訪問入口文件,通過模型,訪問視圖,並獲取數據庫中的數據(這裏數據庫中返回的數據,我們寫假數據):
八、進入modules目錄,創建一個文件UserModule.php,寫入如下代碼:
<?php
class UserModule{
public function getData(){
$data = '{result:{lilei:{age:25,sex:man},lili:{age:23,sex:woman}}';
return $data;
}
}
9、接下來我們編輯controllers目錄下的UserController.php文件,讓他調用UserModule.php<?php
class UserController{
public function index(){
echo '這是user控制器的index方法';
include './views/user/index.php';
include './modules/UserModule.php';
$umo = new UserModule();
echo '<br/>';
echo $umo->getData();
}
}
再次訪問url【server/mvcDemo/?c=User&m=index】,顯示如下:
到此文章,一個簡易的mvc實現就完成了。