【问题标题】:MVC (PHP): Do Controllers/Actions map to each and every request?MVC (PHP):控制器/动作是否映射到每个请求?
【发布时间】:2010-12-07 18:32:10
【问题描述】:

我已经通过 Zend 掌握了 MVC(在 PHP 中)。我对 Zend 框架的理解是,每种类型的用户请求都映射到一个特定的控制器(这反过来可能映射到模型,也可能不映射),每个动作映射到一个视图。我在 Codeigniter 和 Kohana 中注意到了相同的模式,在某种程度上也在 Symfony 中。实际上,URL 映射如下:

www.domain.com/index.php/CONTROLLER/ACTION/...additional parameters...

MVC 总是这样吗?这与作为设计模式的页面控制器有什么不同?

【问题讨论】:

    标签: php model-view-controller zend-framework view controller


    【解决方案1】:

    我认为主要区别在于,对于页面控制器模式,您网站的每个页面都有一个单独的文件。在 PHP 中 MVC 的典型实现中,您可以在单个控制器中将常用操作组合在一起。此外,PHP 中的典型 MVC 实现支持自定义路由,允许您创建自定义映射到控制器/操作,而无需使用 http 服务器重写。

    【讨论】:

      【解决方案2】:

      Zend 框架使用Two Step View。它与MVC 非常相似。如您所见,架构和 url 映射之间没有太多对应关系。
      如果您想了解可能的架构,请阅读 Martin Fowler 的 PoEAA

      【讨论】:

      • ZF 可以与 MVC 模式一起使用,对于 View 部分,它使用 2 步视图模式
      【解决方案3】:

      1-“MVC总是这样吗?

      www.domain.com/index.php/CONTROLLER/ACTION/...附加参数..."

      并非总是如此,您可以将路由扩展为基于域(例如):

      DOMAIN.TLD/USER 为 USER.DOMAIN.TLD

      2-我认为但我不是 100% 确定页面控制器是 MVC 模式的子集 我的意思是页面控制器=仅控制器!

      【讨论】:

        【解决方案4】:

        是的,这是 uris 最常见的用法。但值得注意的是,您不能将 MVC 模式与 (ir)regular uris 一起使用。像 http://www.domain.tld/?controller=home&action=posts 甚至 http://www.google.com/search?hl=en&source=hp&q=MVC 这样的 uri 就可以了。

        MVC 是关于你如何构建你的层,而不是反映在 uri 中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-30
          • 1970-01-01
          • 2016-07-01
          • 2020-01-22
          • 2011-07-22
          • 2014-03-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多