博主信息
博文 30
粉丝 1
评论 0
访问量 29758
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP框架MVC原理
阿乎乎的学习
原创
1171人浏览过

MVC的原理是通过解析路由,获得参数,通过参数加载获取相对应的控制器和方法。

index.php实例

<?php
//获得路由地址
$path=$_SERVER['REQUEST_URI'];
$script_name=$_SERVER['SCRIPT_NAME'];
$path=str_replace($script_name,'',$path);
//解析路由
$path=ltrim($path,'/');
//分割获得的参数
$path=explode('/',$path);
//将分割的路由参数第一个字母大写,用来对应控制器
$path[0]=ucfirst($path[0]);
//获取类名
$controller=$path[0];
//获取方法
$method=$path[1];
//加载控制器
include_once __DIR__.'/controller/'.$controller.'Controller.php';
//加载模型
include_once __DIR__.'/model/'.$controller.'Model.php';
$obj=new HomeController();
echo $obj->$method();

运行实例 »

点击 "运行实例" 按钮查看在线实例

controller/HomeController.php实例

<?php
class HomeController {
    public function index(){
        return 'hello world';
    }
    //添加访问视图的方法
    public function view(){
        require __DIR__.'/../view/home.php';
    }
    public function model(){
        //本来还在思考怎么才能用变量动态引入model和view,但是后来一想MVC一个控制器对应一个模型对应一个view,他们是一一对应的,应该不需要动态引入。
        include_once __DIR__.'/../model/HomeModel.php';
        $obj=new HomeModel('小新',18,'男');
        $res=$obj->show();
        return $res;
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

model/HomeModel.php实例

这加载的一个模型,但是模型好像不应该这样用!

<?php
class HomeModel{
    public $name;
    public $age;
    public $sex;
    public function show(){
        return '我的名字是'.$this->name.',今年'.$this->age.'岁了,如你所见我是'.$this->sex.'的。';
    }
    public function __construct($name,$age,$sex)
    {
        $this->name=$name;
        $this->sex=$sex;
        $this->age=$age;
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

view/home.php实例

<?php
echo <<<DOC
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>演示视图页面</title>
</head>
<body>
    <h3>这是一个视图页面</h3>
    <div>看到这个页面说明视图加载成功</div>
    
</body>
</html>
DOC;

运行实例 »

点击 "运行实例" 按钮查看在线实例

虽然大致搞懂了MVC加载的原理,MVC设计模式是通过解析路由来获得参数,通过参数来找到对应的控制器和方法,再通过控制器进而控制视图和模型。但依然不会写真正的MVC架构。

另外,composer的安装基本上都是下一步下一步只需要注意安装目录和选择PHP版本,更改了阿里云的全局配置,比较麻烦的是,我这不知道是网络问题还是什么鬼,根本打不开packagist,所以只能手动下载laravel,不过还是慢!!!

 

 

批改状态:合格

老师批语:现在学到laravel, 尽快跟上
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

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