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

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

零度 的博客
零度 的博客原创
2019年11月03日 22:01:21816浏览

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议