为了让我的控制器尽可能干,我需要在控制器的两个操作之间共享一些公共代码(一大块代码)而不是所有这些代码,我需要在我的操作中使用此共享代码中的访问变量。
例如:
class FirstController extends Zend_Controller_Action {
public function firstAction() {
//common code here: contains an array $columns
}
public function secondAction() {
//common code here: contains an array $columns also
}
//other actions
}
所以我如何重构这一点以将公共代码放在一个位置,并且能够访问$columns
以及firstAction()
和secondAction()
。
感谢。
答案 0 :(得分:5)
我不建议您使用基本控制器。对于这么小的任务来说,这太过分了。由于您希望在一个控制器中共享公共代码,因此请使用动作帮助程序和类属性$columns
,您可以将其作为参数发送给动作帮助程序。
在此处详细了解action helpers。
Action Helpers允许开发人员注入运行时和/或按需 功能扩展到任何Action Controller 化Zend_Controller_Action。行动助手旨在尽量减少必要性 扩展抽象的Action Controller以便注入常见的 动作控制器功能。
答案 1 :(得分:1)
您可以创建新类并扩展Zend_Controller_Action
,然后扩展新创建的类Zend_Controller_Action
示例:强>
class CommonactionsController extends Zend_Controller_Action {
public function firstAction() {
//common code here : contains an array $columns
}
public function secondAction() {
//common code here : contains an array $columns also
}
//other actions
}
然后:
class FirstController extends CommonactionsController {
// here you can use all your common actions...
}
第二个控制器..
class SecondController extends CommonactionsController {
// here you can use all your common actions...
}
依旧......