2010-08-12 114 views
1

我正在研究一个在控制器中具有函数invokeView()的框架。到目前为止,这基本上包含了一个$ target php类,它反过来显示了一个聪明的模板。我希望$ target类能够访问在控制器内部创建的$ response对象(与调用$ target页面的地方相同)。
而不是让$目标页面从全局区域(如会话存储)中获取$ response对象,我想将它传递给$ target类,也许通过在$ target对象上显示一个函数,如显示($响应)。看起来如果我做了这样的事情,调用堆栈会继续增长并且不断增长,这并不好。PHP调用堆栈问题

我在说什么有什么意义?如果是这样,更有意义的是,通过$回应或从会话中获取?

谢谢!

+0

您能否澄清一下,'invokeView'是否带有任何参数? '$ target'是View类吗? “通常情况下”控制器会设置某种类型的上下文变量以供在视图中使用,您是否可以在其中添加$响应?怎么样覆盖Controller中设置'$ target'类的方法,并在'$ target'类'__construct'方法中添加一个附加参数? – sberry 2010-08-12 02:51:45

+0

控制器类根据$ request对象中的属性执行命令。一旦所有命令执行完毕(如果有任何命令转发给另一个命令),那么控制器将根据刚才调用的命令以及该命令的状态(OK,ERROR等)确定要显示的视图。一旦它有适当的视图,说'注册',然后它调用invokeView('target')。然后InvokeView只需调用: include'/lib/pages/target.php'。 使用当前的'include'设置,我必须将$ request(或$ response)对象添加到目标将访问它的会话var中。 – user417918 2010-08-12 03:10:05

+0

我只是不确定这是否是传递变量的最佳方式。如果我在目标类上有一个_构造,我担心通过在控制器类中实例化它,我会在堆栈上创建大量永远不会弹出的调用。 – user417918 2010-08-12 03:11:02

回答

0

不,它没有意义,应该不是问题。 PHP有一个函数嵌套限制,无论如何都要照顾太深的嵌套代码调用:)