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的内置函数姿势多,不愧是最好的语言