我需要在所有控制器中使用一些常见的行为。有一个好主意有一个BaseController并使所有控制器扩展该类?如果是这样,避免Fatal error: Class 'BaseController' not found
错误的正确方法是什么。
答案 0 :(得分:6)
这当然是一种常见的方法。
但article by ZF project lead Matthew Weier O'Phinney解释了action-helpers如何以更大的灵活性提供相同的好处。
特别是,通用基本控制器通常会成为多个但并非所有控制器中使用的功能的转储基础,因此它变得过度。 Action-helpers是一种懒惰的替代方案,可以在您需要的时间和地点精确调用功能。
此外,action-helper调度挂钩 - init()
,preDispatch()
和postDispatch()
- 允许您在每个控制器上自动执行类似插件的功能基础。
我会去帮助他们。但与大多数事情一样,YMMV。 ; - )
答案 1 :(得分:3)
是的,这是一个好主意和非常常见的模式。查看参考ZF手册的Subclassing the Action Controller部分。
答案 2 :(得分:3)
不,不要那样做。使用动作帮助程序为控制器添加功能。如果使用基本控制器,它将很快变得复杂和不稳定。行动助手可以提供更大的灵活性。
答案 3 :(得分:2)