php - 不同的MVC框架的通信方式不一样吗?

 冰凌清泽_712 发布于 2022-11-20 18:45

这是我在阮一峰大大的博客上看到的一张图

原文地址:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm

因为公司平时用的是YII框架,所以和我理解的MVC突然就有了区别,下图是我理解的MVC

图来源于书: web-application-development-with-yii-and-php

请问MVC模式的重点只是MVC三层吗?其中不同通信方式就和自身框架有关了?

3 个回答
  • 阮一峰的也不对,或者他有他的理解。 mvc并不是单向的。 m v c 之间的线估计会很多。 and mvc 就是mvc 。其他的db request router就不要扯进来了。
    建议一开始不要扯什么mvc概念,找个框架用着用着,你自然就明白了。

    2022-11-20 18:56 回答
  • mvc只是一种思想 不同的语言和框架都有各自的实现和改进 就像阮老师写的 他们只是在m v c三个层的侧重点不同

    2022-11-20 18:56 回答
  • 前端控制器(路由)并不是MVC必需的设计模式.
    MVC的核心思想是分离界面(View),逻辑(Controller),数据(Model).
    比如浏览器访问页面控制器,控制器处理输入,调用模型获取数据,载入视图输出数据.

    /post.php?id=1024 //页面控制器(输入ID,输出文章)
    <?php
    if(!defined('APP_ROOT')) define('APP_ROOT', './'); //定义入口
    require APP_ROOT.'include/common.php'; //加载模型(比如functions.php)
    $data = get_post(intval($_GET['id'])); //处理输入,调用模型获取数据
    $view = render('post.php', $data);     //载入视图输出数据
    echo $view;
    //在控制器中获取视图需要的所有数据,并封装到$data数组中,传入模板.
    //如果你想在视图里直接调用模型数据,可以把render函数改为require.
    //这样视图跟控制器都在全局作用域,灵活性更强,但也要注意尽量不要在视图里写具体逻辑.
    //视图应该专注于调用并输出数据.

    /include/functions.php里的render()函数:

    function render($template, array $data = array()) {
        global $app;
        ob_start();
        require APP_ROOT.'themes/'.$app['theme'].'/'.$template;
        $view = ob_get_contents();
        ob_end_clean();
        return $view;
    }
    2022-11-20 18:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有