Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:是很美, 希望一直这样美下去
1.demo1
<?php //命名空间 namespace mvc; // 1. 加载模型 require 'Model.php'; // 2. 加载视图 require 'View.php'; // 3. 创建控制器 class Controller1{ //创建方法 public function index(){ // 3.1 获取数据 $model = new Model(); $data = $model->getData(); // 3.2 渲染模板 $view = new View(); return $view->fetch($data); } } // 4. 客户端调用/访问类成员 $controller = new Controller1(); echo $controller->index();
点击 "运行实例" 按钮查看在线实例
运行模式:
2.demo2
<?php //命名空间 namespace mvc; // 1. 加载模型 use BaconQrCode\Common\Mode; require 'Model.php'; // 2. 加载视图 require 'View.php'; // 3. 创建控制器 class Controller2{ //创建方法 public function index(Model $model, View $view){ // 3.1 获取数据 $data = $model->getData(); // 3.2 渲染模板 return $view->fetch($data); } } // 4. 客户端调用/访问类成员 // 将模型与视图的实例化代码从控制器分离出来, 放到了客户端 $model = new Model(); $view = new View(); // 将模型对象与视图对象,以参数的方式再次注入到控制器的方法 $controller = new Controller2(); echo $controller->index($model, $view);
点击 "运行实例" 按钮查看在线实例
运行结果图:
3.demo3
<?php //命名空间 namespace mvc; // 1. 加载模型 use BaconQrCode\Common\Mode; require 'Model.php'; // 2. 加载视图 require 'View.php'; // 3. 创建控制器 class Controller3{ //建立保护属性 protected $model; protected $view; // 构造方法, 注入点改到了构造方法中, 实现了模型与视图对象的共享 public function __construct(Model $model, View $view){ //把构造方法里的值传入保护属性 $this->model = $model; $this->view = $view; } public function index(){ // 3.1 获取数据 $data = $this->model->getData(); // 3.2 渲染模板 return $this->view->fetch($data); } } // 4. 客户端调用/访问类成员 // 将模型与视图的实例化代码从控制器分离出来, 放到了客户端 $model = new Model(); $view = new View(); // 将模型对象与视图对象,以参数的方式再次注入到控制器的方法 $controller = new Controller3($model, $view); echo $controller->index();
点击 "运行实例" 按钮查看在线实例
运行结果图:
4.demo4
<?php //命名空間 namespace mvc; //加載模板 require './mvc/Model.php'; //加載視圖 require './mvc/View.php'; //創建容器 class rongqi{ //建立一個空數組 protected $ina=[]; //建立綁定方法 public function bind($a,$b){ //把$a放入ina數組中,等於$b $this->ina[$a]=$b; //$this->instance['model']='new Model(x,y)' } //建立使用方法 public function make($a,$c=[]){ //返回回調函數 return call_user_func_array($this->ina[$a],[]); } } //實例化容器 $k=new rongqi; //用到模型對象,視圖對象,將它們綁定到容器中 $k->bind('model',function (){return new Model();}); $k->bind('view',function (){return new View();}); //創建控制器 class Controller4{ public function index(rongqi $k){ //獲取數據 $data=$k->make('model')->getData(); //渲染模板 return $k->make('view')->fetch($data); } } //客戶端調用 $Controller=new Controller4; echo $Controller->index($k);
点击 "运行实例" 按钮查看在线实例
运行结果图:
5.demo5
总结
知道了MVC基本框架,模型,视图,通过例子一步步把代码变的更加优美。