【发布时间】:2012-09-09 23:57:38
【问题描述】:
所以我一直在研究存储库模式的作用,它是一种将持久层与 MVC 框架中的模型解耦的方法。在此之前,我可能让我的UserModel 直接调用活动记录方法以存储/检索域对象。
这是我对调用堆栈的想法的草图,该请求应该创建一个新的User:
这是我的问题:
- 这是存储库模式的正确实现吗?
- 我了解控制器应该从请求中获取用户信息并将其传递给模型。这通常是怎么发生的?控制器是否应该创建一个用户对象,然后将其传递给模型?我确实不想只将一组值传递给模型——我也不想将 15 个参数传递给创建用户的模型方法。
- 为了让这种模式真正起作用,在我看来,我需要一个域对象,它只是一个没有任何行为的简单数据结构,然后如果我使用 ORM,我将拥有一个 ORM对象,它将描述对象是如何被持久化的。最初我拒绝这样做,因为它感觉像是重复的代码,但如果我真的将持久性与业务逻辑分开,这将是必要的,对吧?例如,如果我使用内存存储怎么办?我将不再使用 ORM 对象。
我在这里的想法正确吗?这是可以接受的吗。请帮我把脑子里的点连起来。
【问题讨论】:
标签: php model-view-controller design-patterns repository-pattern