【发布时间】:2013-11-03 11:24:50
【问题描述】:
所以我正在用 PHP 制作这个 Web 应用程序,并且我想用领域对象和数据映射器制作一个体面的模型层(尽可能),所有这些都由服务编排。
现在我在想,我应该如何创建我的对象?
工厂?
然后:
- 如果一个对象实现了某个接口(通常是
DataMapper),我必须使用反射来实际执行。其他人没有他们需要实现的设置方法;我不想依赖名称,因为命名约定改变)。 - 我必须通过将工厂传递给 ServiceFactory 来违反 demeter 定律,然后它只会将其传递给它创建的服务。
new 关键字?
然后:
- 我在单独测试代码时会遇到问题。
- 感觉耦合太紧了。
还有什么?
我不知道,这就是我问的原因! :P
我该怎么办?有更好的方法吗?
【问题讨论】:
-
您可以使用类型提示来强制类型而不使用反射。我建议使用像 Doctrine2 这样的东西来为你抽象出所有这些。
-
我通常采用工厂(无反射)并使用spl_autoload 来捕获此类依赖项。当然,这只有在您有一些命名约定(如 PSR-0)时才有效
标签: php oop model-view-controller