1.先写一个mvc
首先创建一个model.php
实例
<?php //model中装待渲染数据 class model { public function getdata() { return ['today'=>'今天光棍节!年年有今日岁岁有今朝']; } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
再创建一个view.php,将model渲染为有序列表,在前面加一个小黑点
实例
<?php class view { public function fetch($data) { $a='<li>'.$data['today'].'</li>'; return $a; } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
最后写一个demo1.php,在里面引用model和view
实例
<?php require 'model.php'; require 'view.php'; class Controller { public function index() { //1.获取数据 $model= new model(); $data=$model->getdata(); //2.渲染 $view= new view(); return $view->fetch($data); } } //调用控制器 $con = new Controller(); echo $con->index(); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
效果图
2.写一个依赖注入,大体上没什么变化,变化在有控制器的那个脚本里
model.php
实例
<?php //写一个MVC然后用依赖注入解耦 //model中装待渲染数据 class model { public function getdata() { return ['today'=>'今天双十一']; } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
view.php
实例
<?php class view { public function fetch($data) { $a='<li>'.$data['today'].'</li>'; return $a; } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
demo1.php
实例
<?php require 'model.php'; require 'view.php'; class Controller { public function index(model $model,view $view) { //1.获取数据 $data=$model->getdata(); //2.渲染 return $view->fetch($data); } } //调用控制器 $model= new model(); $view= new view(); $con = new Controller(); echo $con->index($model,$view); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
变化在于:把实例化过程搬到类的外部了,并将实例化的结果分别传入到形参和实参的位置
效果图
3.写一个简单路由
实例
<?php //路由就是将url中的参数映射到数值中 //1.解析出除域名外的其他内容 $url=$_SERVER['REQUEST_URI']; //把那些内容用数组形似表现,并在url中传入 //模块:ad //控制器:user //方法:a //参数:name,wang,mobile,666666,date,2018.12.31 $req=explode('/',$url); //2.取出参数 $b=array_slice($req,7,6); //3.将键和值对应起来 for($i=0;$i<count($b);$i+=2){ $params[$b[$i]]=$b[$i+1]; } //4.映射 class user { //在形参位置输入键 public function a($name,$mobile,$date) { return '姓名:'.$name.',手机号:'.$mobile.',日期:'.$date; } } //回调 echo call_user_func_array([(new user()), 'a'], $params);
运行实例 »
点击 "运行实例" 按钮查看在线实例
效果图
路由就是将uel中的参数部分先提取出来再,然后将键值对应,再映射到方法中