登录  /  注册
博主信息
博文 31
粉丝 1
评论 5
访问量 28100
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
根据课堂案例,练习一下mvc的实现原理-2019-10-31作业
零度 的博客
原创
760人浏览过

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学