php mvc,PHP——MVC模式讲解与实例

一、 MVC模式流程图

9256458a824dd8fbac2c3de76b571f24.png

二、MVC概念

(1)作用

MVC包括控制器(Controller),模型(Model),视图(View)。

控制器的作用是调用模型和 视图,将模型产生的数据传递给视图,并让视图去显示

模型的作用是获取数据并处理返回数据

视图的作用是将取得的数据进行美化,并向用户终端输出

(2)执行过程

1. 浏览者 -> 调用控制器,发出指令

2. 控制器 -> 按指令选择合适的模型

3. 模型 -> 按指令取数据

4. 控制器 -> 按指令选视图

5 . 视图 -> 把取到的数据展示出来

三、简单的MVC实例

(1)目录规划

607e407777b31d022bc0b8acd7912b42.png

(2)编写类文件

1. testController.class.php 控制器类文件

命名规则:test(名字)Controller(控制器文件).class.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.运行结果

c284f886465201b044bd6e79bfac7af1.png

四、简单的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

b503cc64313b30d835133e6b0a353375.png

想了解更多PHP相关问题请访问PHP中文网:PHP视频教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
10-28 211
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值