如何在PHP中使用Datamapper实现MVC


How to implement MVC with Datamapper in PHP

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

我现在试着去思考超越我工作的概念。请与我分享你的想法。我想要得到这个

如果我将设置MVC与数据映射器相结合,这将是合乎逻辑的,例如一个论坛:

所有重要的东西都是实体。帖子,线程,用户,论坛。基本上,我把控制器看作一个页面。它可以选择显示不同的模板(例如列表或表单),但它或多或少都是页面。

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

现在如何工作,显示一个线程中的所有帖子:

route设置为thread-> load thread controller -> controller向实体(post, user)请求信息->实体告诉映射器它们需要什么->映射器从数据库获取信息并返回给实体->实体将信息返回给控制器->控制器将信息返回给视图->视图显示

这个想法正确吗?

现在"模型"去哪里,然后,从MVC?还是我漏了步骤?

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

我该如何开始呢?

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

虽然我们回避Stack Overflow上的框架建议,但我从这里的评论中了解到,Symfony2被认为是该设计模式的最佳实现之一,特别是因为它使用了依赖注入。一定要阅读这里的一些带有"mvc"标签的问题——有很多可以选择的。就其价值而言,我不会过多地纠结于设计模式(即框架X是否实现模式Y)——只要你的应用是模块化的,并且易于测试,那就是一个巨大的胜利。