我只是在学习MVC所以你可以发现我的问题很奇怪......
My Controller可以通过传递给Controller的构造函数的Container对象访问不同的共享对象。要访问共享对象,我应该使用$ this-> container-> db来访问数据库适配器或$ this-> container-> memcache来访问Memcached适配器。我想知道我应该将View对象放入带有共享对象的Container还是?
从一方面来看,从这个容器中获取视图真的很舒服,但是这样我就无法创建多个Views实例(例如,每次我从View中调用Controller的方法时我都应该有一个View实例) 。解决办法是什么?我应该如何将View对象传递给Controller和/或我应该如何从Controller创建新的View实例?
谢谢!
答案 0 :(得分:1)
如果您想要DI体验,也可以在观看时进行,但我不知道它是否真的对您有所帮助。切勿从视图中调用控制器方法。而是编写一些局部视图方法并从视图中调用它们,这些视图定义了页面布局(类似于Rails所做的)。 恕我直言,如果你想逐渐进入MVC,从核心原则开始,迭代地获取细节,但不要将构件/设计模式学习为MVC的部分 - 架构,设计,整个事项:)
答案 1 :(得分:0)
嗯,也许尝试为静态部分实现缓存。恕我直言尝试将cacher对象(通过DI)插入控制器,并让该对象决定是否要发送缓存的部分视图或实例化新的部分视图。如果要从db缓存数据,请使用从控制器到模型的相同模式,因此无论何时在控制器中需要模型,请询问db cacher对象(相同的DI原理)。它够清楚吗?