【问题标题】:How to implement MVC with Datamapper in PHP如何在 PHP 中使用 Datamapper 实现 MVC
【发布时间】:2013-05-28 05:24:11
【问题描述】:

之前我问过这个问题: should-i-create-an-object-or-work-with-an-array

我现在正在尝试超越我正在使用的概念进行思考。请与我分享你的想法。我想得到这个。

如果我要结合数据映射器设置 MVC,这是否合乎逻辑,例如论坛:

所有重要的事物都是实体。帖子、主题、用户、论坛。 基本上我将控制器视为一个页面。它可以选择显示不同的模板(例如列表或表单),但它或多或少是页面。

通过路由器,我将加载所需的控制器,以获取数据并将其显示在我的模板中。

现在如何在线程中显示所有帖子:

路由设置为线程-> 加载线程控制器-> 控制器向实体(帖子,用户)询问信息-> 实体告诉映射器他们需要什么-> 映射器从数据库中获取它并将其返回给实体-> 实体将信息返回给控制器 -> 控制器将信息返回给视图 -> 视图显示。

这是正确的想法吗?

那么“模型”从 MVC 到哪里去了?还是我缺少步骤?

我不想使用第三方工具,我想从头开始构建它,以了解发生的一切。

我该如何开始呢?

【问题讨论】:

  • this 可能会有所帮助。

标签: php model-view-controller orm


【解决方案1】:

我倾向于将页面视为控制器(呈现之前所需的逻辑)和视图(确定页面外观)的总和。一般来说,我建议您不要先编写自己的,因为您将使用尚未完全理解的设计模式。我认为最好选择一个流行的 PHP 框架,看看它是如何实现的,然后如果你仍然介意,尝试编写自己的。在我看来,编写所有这些代码是一项大量的工作,尤其是如果你也想编写 ORM!

虽然我们回避关于 Stack Overflow 的框架建议,但我从这里的 cmets 了解到 Symfony2 被认为是这种设计模式的最佳实现之一,特别是因为它使用了依赖注入。一定要在这里阅读一些带有“mvc”标签的问题——有很多问题可以回答。对于它的价值,我不会过多关注设计模式(即框架 X 是否实现模式 Y)——只要你的应用程序是模块化的并且易于测试,那就是一个巨大的胜利。

【讨论】:

  • 感谢您的推荐。实际上,我是从 CodeIgniter 开始的,在对必须遵守他们的代码感到恼火之后,我决定编写自己的框架。我还使用过一些 Webshop 系统,比如 OpenCart,它们有一个很好的 MVC 模型。我阅读了系统的代码并试图了解他们在做什么以及为什么。我在 Lynda.com 上学习了一些课程,这也为我指明了其他方向。
  • 比如导师很热衷于使用静力学,而另一位则不喜欢静力学,但对Singleton很热心。然后在这里,所有这些不同的意见。我实际上认为你是对的:我应该只做一个可以运行的应用程序,而不是挂断电话。
  • 值得知道的是,最近有人反对单例模式——我个人倾向于避免它,因为它与类可扩展性存在硬性联系。然而,事实证明there's plenty of other reasons too
  • 控制器不得包含应用程序逻辑。查看模式是如何定义的。控制器唯一的任务与改变模型层和视图的状态有关。
  • @halfer 是的,在有人在这里称其为“邪恶”之后,我已经阅读了很多关于单例的利弊。我将重新编码那部分。还有我在课程中使用的静力学。基本上......自从我开始真正进入代码以来,我已经从一个阵营跳到另一个阵营......很难通过所有观点来阅读真正的错误和权利。我非常想把它弄好。
猜你喜欢
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2011-01-20
相关资源
最近更新 更多