由于学习laravel之前,没有接触过php的MVC框架,所以理解上有些费力,于是决定先学习MVC。。。(ps:我是看的慕课网学习视频,大家可以戳进去看看,讲讲得挺好的)
- 什么是MVC
- MVC的M-V-C之间的协同工作:
-MVC文件目录结构:
- 什么是单一入口文件:
- MVCtest文件目录结构:
具体代码如下:
index.php
<?php
/**
* 第一步:浏览者 ->调用控制器,对它发出指令
* 第二步:控制器 ->按指令选取一个合适的模型
* 第三步:模型 ->按控制器指令取相应数据
* 第四步:控制器 ->按指令选取相应视图
* 第五步:视图 ->把第三步取到的数据按照用户想要的样子显示出来
*/
//url形式 index.php?controller=控制器名&method=方法名
require_once('function.php');
$controllerAllow=array('test','index');
$methodAllow=array('show','index');
$controller = in_array($_GET['controller'], $controllerAllow)?daddslashes($_GET['controller']):'index';
$method = in_array($_GET['method'],$methodAllow)?daddslashes($_GET['method']):'index';
C($controller, $method);
?>
function.php
<?php
/**
* 调用控制器函数
* @param string $name 控制器名
* @param string $method 控制器执行函数
*/
function C($name, $method)
{
require_once('./libs/Controller/'.$name.'Controller.class.php');
//$obj = new testController();$obj->show();
eval('$obj = new '.$name.'Controller(); $obj->'.$method.'();');
}
/**
* 调用模型函数
* @param string $name 模型名
*/
function M($name)
{
require_once('./libs/Model/'.$name.'Model.class.php');
eval('$obj = new '.$name.'Model();');
return $obj;
}
/**
* 调用视图方法
* @param string $name 视图名
*/
function V($name)
{
require_once('./libs/View/'.$name.'View.class.php');
eval('$obj = new '.$name.'View();');
return $obj;
}
/**
* 参数过滤函数
* @param string $str 输入的字符串
* @return string 转义后的字符串
*/
function daddslashes($str){
return(!get_magic_quotes_gpc())?addslashes($str):$str;
}
?>
testController.class.php
<?php
/**
*
*/
class testController
{
function show()
{
$testModel = M('test');
$data = $testModel->get();
$testView = V('test');
$testView->display($data);
}
}
?>
testModel.class.php
<?php
/**
*
*/
class testModel
{
function get()
{
return "hello world";
}
}
?>
testView.class.php
<?php
class testView{
function display($data){
echo $data;
}
}
?>
- 程序执行流程: