一、 MVC模式流程图
二、MVC概念
(1)作用
MVC包括控制器(Controller),模型(Model),视图(View)。
控制器的作用是调用模型和 视图,将模型产生的数据传递给视图,并让视图去显示
模型的作用是获取数据并处理返回数据
视图的作用是将取得的数据进行美化,并向用户终端输出
(2)执行过程
1. 浏览者 -> 调用控制器,发出指令
2. 控制器 -> 按指令选择合适的模型
3. 模型 -> 按指令取数据
4. 控制器 -> 按指令选视图
5 . 视图 -> 把取到的数据展示出来
三、简单的MVC实例
(1)目录规划
(2)编写类文件 1. testController.class.php 控制器类文件
命名规则:test(名字)Controller(控制器文件).class.php ( 类文件 )
<!--
首先实例化控制器对象,并调用指令方法,
方法里面实例化模型对象,调用取数据方法
并实例化视图对象,调用展示方法
-->
<!--
控制器的方法没有参数,而其他的就有参数
-->
<?php
// 类名和文件名相同
class testController{
function show(){
$testModel = new testModel();//按指令选择一个模型
$data = $testModel -> get();//模型按照指令取数据
//按指令选择视图 实例化一个view的对象
$testView = new testView();
//把取到的数据按用户的样子显示出来
$testView -> display($data);
}
}
?>
|
2. testModel.class.php 模型类文件 命名规则:test(模型文件名称 )Model( 模型文件).class.php 类文件
<?php
class testModel{
//获取数据
function get(){
return "hello world";
}
}
?>
|
3. testView.class.php 视图类文件
<?php
class testView{
//展示数据
function display($data){
echo $data;
}
}
?>
|
4. 单一入口文件
让他来调用控制器,而控制器去调用模型和视图
<?php
//引入类文件
require_once('/libs/Controller/testController.class.php');
require_once('/libs/Model/testModel.class.php');
require_once('/libs/View/testView.class.php');
//类的实例化
$testController = new testController();//对象赋值给变量
$testController->show();//调用方法
?>
|
5.运行结果
四、简单的MVC实例改进----方法封装
1. 封装一个实例化控制器等的对象和调用方法的函数
<?php
//控制器名字和要执行的方法
function C($name,$method){
require_once('/libs/Controller/'.$name.'Controller.class.php');
//对象赋值给变量
// $testController = new testController();
// $testController->show();
eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');//把字符串转换为可执行的php语句
}
//封装一个实例化模型的对象和调用方法的函数
function M($name){
require_once('/libs/Model/'.$name.'Model.class.php');
//$testModel = new testModel();
eval('$obj = new '.$name.'Model();');//实例化
return $obj;
}
//封装一个实例化视图的对象和调用方法的函数
function V($name){
require_once('/libs/View/'.$name.'View.class.php');
//$testView = new testView();
eval('$obj = new '.$name.'View();');
return $obj;
}
//为了安全性 ,过滤函数
//addslashes对’,字符进行转义
//get_magic_quotes_gpc()当前魔法符号的打开状态,打开返回true,
function daddslashes($str){
return (!get_magic_quotes_gpc() )? addslashes($str) : $str;
}
?>
|
2.重新编写入口文件index.php
浏览器url访问形式 http://......index.php?controller=控制器名&method=方法名
<?php
require_once('function.php');
//允许访问的控制器名和方法名的数组
$controllerAllow=array('test','index');
$methodAllow =array('test','index','show');
//用get方式接收url中的参数
//过滤输入非法字符 并判断是否在数组里
$controller = in_array($_GET['controller'],$controllerAllow )? daddslashes($_GET['controller']) :'index' ;
$method = in_array($_GET['method'],$methodAllow) ? daddslashes($_GET['method']) :'index';
//调用控制器和执行方法
C($controller,$method);
?>
|
3.运行结果
浏览器访问 http://localhost:8080/MVC/index.php?controller=test&method=show 显示hello world
想了解更多PHP相关问题请访问PHP中文网:PHP视频教程
(责任编辑:admin) |