欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

根据课堂案例,练习一下mvc的实现原理-2019-10-31作业

程序员文章站 2022-03-11 14:20:13
...

根据课堂案例,练习一下mvc的实现原理-2019-10-31作业

根据课堂案例,练习一下mvc的实现原理-2019-10-31作业

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