【问题标题】:Why Symfony2 doesn't have/like models?为什么 Symfony2 没有/喜欢模型?
【发布时间】:2013-03-01 15:31:48
【问题描述】:

我一直在寻找 Symfony2 结构和捆绑包中的模型,但没有。

Symfony2 没有模型的原因是什么?

MVC 是不是走错路了?

我只是好奇,因为我知道 CodeIgniter 实际上也不需要使用模型。在某些情况下,您可以将所有内容放在控制器甚至模型中;)。

谁能更深入地解释一下?

【问题讨论】:

标签: model-view-controller symfony model


【解决方案1】:

因为在正确的 MVC 中没有“模型”。模型是一层。就像表示层(包含控制器、视图和模板)。

您应该寻找的是:服务、映射器和域对象。这些是模型层中比较常见的部分。

【讨论】:

  • 你的逻辑也没有控制器,只有“控制器层”。考虑一下。 ;)
  • @Derfder ,控制器是表示层的一部分。哪个词让你感到困惑?
【解决方案2】:

那是因为 Symfony2 的前任 Fabien Potencier 认为 Models 不属于 Symfony。这就是为什么他将其称为 HTTP 框架。另见他写的这篇文章:"What is Symfony2?"

[...] 你应该知道 Symfony2 实际上是为控制器部分、视图部分提供工具,而不是模型部分。您可以手动创建模型或使用任何其他工具,如 ORM。当然,像 Doctrine2 和 Propel 这样最著名的 ORM 存在紧密集成;但它们是可选的依赖项。 Symfony2 的核心功能不会也永远不会依赖任何 ORM。


Doctrine2 ORM 使用存储库来接管将数据库映射到类的控制。如果你想在你的存储库中有自定义方法,你可以create your own repository。这意味着可以将存储库视为一种模型。

【讨论】:

  • Doctrine2 ORM 是一个很棒的项目,我很高兴 Symfony 框架标准版附带了它。
【解决方案3】:

因为他们不想。

很难回答,但没有一成不变的编程方式。有许多不同的方法,如果你愿意,你可以选择遵循它们,但没有人在做你。在这种情况下,Symfony2 的开发人员认为不需要模型。

这并不意味着 MVC 是错误的。我拥有一辆轿车,但如果你拥有一辆 SUV,这是否意味着你做错了?只是完成工作的另一种方式。

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 2021-10-15
    • 2016-11-04
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多