【发布时间】:2010-03-08 20:04:19
【问题描述】:
我只是在学习 MVC,所以你可能会觉得我的问题很奇怪......
我的控制器可以通过传递给控制器构造函数的容器对象访问不同的共享对象。要访问共享对象,我应该 $this->container->db 访问数据库适配器或 $this->container->memcache 访问 Memcached 适配器。我想知道我应该将 View 对象放入具有共享对象的 Container 中还是不?
从一方面来看,从这个容器中获取视图真的很舒服,但是这样我就不能创建多个视图实例(例如,每次我从视图中调用控制器的方法时,我应该再有一个视图实例) .解决办法是什么?我应该如何将 View 对象传递给 Controller 和/或我应该如何从 Controller 创建新的 View 实例?
谢谢!
【问题讨论】:
-
那个容器是什么东西?
-
...和数据库适配器?控制器应该使用模型,而不是 db 或其适配器......模型应该由它们自己或一些存储库委托从 db 获取
-
为什么要从视图中调用控制器方法?是不是反对MVC之间的分离?
-
@Gregoire,是的,当我想重用其他控制器方法返回的一些 html 时,我正在从视图中调用控制器方法。可能,我应该使用某种 Helpers 来做到这一点,但我对 helpers 还不太了解 :)
-
@Gabriel Ščerbák,是的,这是一个非常糟糕的例子,对不起。忘记数据库适配器(或者当然我只在模型中使用它)。但我仍在使用 Config 对象(并且我也通过 Container 对象访问它)。这是真正的示例容器对象twittee.org