批改状态:合格
老师批语:你说得对, 函数的功能很强大, 每掌握一个函数, 就如同又学会一门新武功


index.php文件代码
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019\11\3 0003
* Time: 09:30
*/
//路由解析
//路由赋值给变量
$server = $_SERVER;
$script_name = $_SERVER['SCRIPT_NAME']; // /index.php
$request_url = $_SERVER['REQUEST_URI']; //index.php/home/index
//把index.php替换成空的
$path_info=str_replace($script_name,'',$request_url);
$path = ltrim($path_info,'/'); //去掉左边的/
//解析Controller 和 method
$controller_method = explode('/',$path); //把路由地址按/去掉,然后变成数组
//ucfirst 字符串首字母换成大写
$controller_method[0] = ucfirst($controller_method[0]);
$controller = $controller_method[0]; //把路由数组 赋值给变量
$method = $controller_method[1]; //把路由数组 赋值给变量
include __DIR__. '/controller/'.$controller_method[0].'.php'; //引入控制器的脚本
$obj = new $controller($model,$view); //创建对象
$res = $obj->$method(); //执行控制里对象里的方法,赋值给变量
exit($res); //结束,输出变量
?>点击 "运行实例" 按钮查看在线实例
Controller\home.php代码
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019\11\3 0003
* Time: 10:30
*/
//引入视图和模型类
include __DIR__.'/../View/view.php';
include __DIR__.'/../Model/model.php';
class Home{
protected $model = null;
protected $view = null;
public function __construct($model,$view)
{
$this->model=$model;
$this->view=$view;
}
// 把模型类注入到视图里
public function index(){
$data=$this->model->name();
return $this->view->name($data);
}
}
//实例化视图和模型类
$model=new Model();
$view= new View();
//$controller=new Home($model,$view);点击 "运行实例" 按钮查看在线实例
\Model\model.php代码
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019\11\3 0003
* Time: 10:20
*/
class Model{
public function name(){
return '我是MVC案例';
}
}点击 "运行实例" 按钮查看在线实例
\View\view.php代码
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019\11\3 0003
* Time: 10:25
*/
class View{
public function name($data)
{
return '<h1>'.$data.'</h1>';
}
}点击 "运行实例" 按钮查看在线实例
总结
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
str_replace(需要替换的字符,替换为xxx,要检查的字符串)-反正是脑子有这回事了,可能语言组织不太好
ltrim(要检查的字符串,从字符串右边删除哪些字符)
ucfirst 字符串首字母换成大写
MVC案例和原理应该学了有四五遍了,根据路由解析写出来感觉还是有点东西的(这是我脑子里没有的姿势)。灵活运用PHP内置函数,php的内置函数姿势多,不愧是最好的语言
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号