【问题标题】:is this an MVC?这是一个MVC吗?
【发布时间】:2011-06-01 09:17:48
【问题描述】:

这是一个关于 MVC 的一般问题 ..

我编写了一个 PHP 类,它将带有核心 JsonData 字符串的数组发送到 Jquery .. 在 Jquery 上,我正在访问数据并将它们添加到我的视图中 (.append("htm stuff"+jsondata))

现在 Jquery 正在从一个 between.php 页面调用数据,该页面有一个包含许多案例的 catch 块,并且在调用 case/function 时,该页面正在从发送 json 数据的 php 类调用一个函数。 .

所以我有我的 oop php 模型,它发送核心 jsondata、控制器(catch 块)和视图(jquery 页面).. 是这种 MVC 吗?还是我错过了?

我的代码示例已发布在上一个问题 here

【问题讨论】:

  • 我还没有见过这样的单一实现。
  • 你是在学习还是在发展?如果开发,我会建议使用框架,因为 1. 它更安全 2. 它更容易和更快 3. 功能 4. 你不必思考(这样或那样?框架强制你以正确的方式去做)。你可以用谷歌搜索php framework
  • 只是学习 :) ,但感谢您的建议!
  • 我完全同意@Janis Veinbergs。更具体地说,我会在谷歌上搜索 php 的 MVC 框架。 CodeIgniter 很受欢迎,而全新的 Laravel 则强调轻量感和速度。

标签: php jquery model-view-controller design-patterns


【解决方案1】:

查看您在其他帖子中发布的代码,它不是 MVC 实现。或者至少这是一个糟糕的实现。

MVC 旨在将您的演示与业务逻辑分开。查看您的 POST 类,您并没有将您的业务逻辑与您的视图分开:

public static function readPosts(){
    $query = new Post_db("SELECT * FROM pmessage
                          ORDER BY p_id DESC
                         ");

    $posts = array();
    while($row = $query->fetchRow()){
        $posts [] = new Post($row);
    }

    foreach($posts as $item){
        echo $item;
    }
}

在此功能中,您从数据库(业务逻辑)和打印内容(视图)中获取信息。换句话说,您将您的 MV 组合在一种方法中。所以我会说:不,这不是 MVC。

【讨论】:

  • 我同意,但我会更进一步说,访问数据库是一项数据访问责任,值得它自己的与业务层相切的层。我是存储库模型的粉丝,它为您提供了在未来更改持久性方法的强大能力。
【解决方案2】:

简单来说,MVC 是一种模式,但它应该遵循一些编码模式,即关注点分离

  • Model:属性类,基本上是表数据的容器
  • 视图:使用模型显示数据的简单 HTML 页面。
  • 控制器:它向模型发送命令以更新模型的状态 .它也像路由器一样工作,将模型发送到视图,反之亦然。

请参阅以下链接以供参考...

Help Link

【讨论】:

    【解决方案3】:

    任何满足或遵循Model-View-Controller 模式的东西都称为MVC。以这种或其他方式接受它取决于我们。

    在我看来,就像我说的,如果它满足 MVC 的需求,那么就称之为 MVC。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多