Zend Framework - 如何在控制器的某些操作之间共享公共代码?

时间:2012-04-20 12:55:41

标签: zend-framework zend-controller

为了让我的控制器尽可能干,我需要在控制器的两个操作之间共享一些公共代码(一大块代码)而不是所有这些代码,我需要在我的操作中使用此共享代码中的访问变量。

例如:

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()

感谢。

2 个答案:

答案 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...
}

依旧......