MVC的基本知识
MVC即模型model,视图view,控制器controller
一般地model用来处理与数据库的联系,
view用来渲染用户端界面,
controller用来控制数据流程,即就是对接model和view
model <-> controller <-> view
简单结构的MVC例子
1) 创建模型model,生成数据$data(),存为文件model.php
namespace mvcdemo;
// 链接数据库;
require ('pdoconnet.php');
// 建立模型类: 用于数据库操作
class Model
{
public function getData()
{ global $pdo;
return $pdo->query('SELECT * FROM `T_user` LIMIT 10')->fetchAll();
}
}
// print_r ((new Model)->getData());
2)创建视图,就是用户端的界面样式,生成view.php文件
namespace mvcdemo;
class View{
public function fecth($data)
{
$table='<table>';
$table.='<tr><th>ID</th><th>姓名</th><th>性别</th><th>手机号</th></tr>';
foreach ($data as $user){
$table.= '<tr><th>'.$user['ID'].'</th>';
$table.= '<th>'.$user['username'].'</th>';
$table.= '<th>'.($user['sex']?'男':'女').'</th>';
$table.= '<th>'.$user['mtel'].'</th></tr>';
}
$table.= '</table>';
return $table;
}
}
// 获得数据
// require ('model.php') ;
// $arr=(new Model)->getData();
// 打印视图
// echo (new View)->fecth($arr);
3)创建控制器,生成controller.php文件
namespace mvcdemo;
// 导入两个文件
require ('model.php');
require ('view.php');
class controller
{
public function getindex()
{
// 取得数据
$Model=new Model;
$data=$Model->getData();
// 取得视图
$View=new View;
return $View->fecth($data);
}
}
// 渲染结果
$controller=new controller;
echo $controller->getindex();
echo (new controller)->getindex();
4) 在controller.php显示的结果
注入点的优化
由于现有控制器的数据注入点是在函数中写错,对于引用不方便,因此可以难过修改注入点,让程序变得更灵活,这就是注入的选择
)通过函数传参数来注入
namespace mvcdemo;
require ('model.php');
require ('view.php');
class controller2
{
public function getindex(Model $model, View $view)
{
// 取得数据
$data=$model->getData();
// 取得视图
return $view->fecth($data);
}
}
// 渲染结果,通过函数传参,把二个new通过参数传入
$model=new Model;
$view=new View;
$controller=new controller2;
echo $controller->getindex($model,$view);
通过构造法传入
class controller3
{
private $model;
private $view;
public function __construct(Model $model,View $view)
{
$this->model=$model;
$this->view=$view;
}
public function getindex()
{
// 取得数据
$data=$this->model->getData();
// 取得视图
return $this->view->fecth($data);
}
}
// 渲染结果
$model=new Model;
$view=new View;
$controller=new controller3($model,$view);
echo $controller->getindex();
?>