批改状态:合格
老师批语:完成的不错。
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中的参数部分先提取出来再,然后将键值对应,再映射到方法中
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号