4

为了让我的控制器尽可能干燥,我需要在我的控制器的 2 个动作之间共享一些公共代码(一大块代码),而不是全部,我需要在我的动作中访问这个共享代码中的变量。

例如:

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
}

那么我该如何重构它以将通用代码放在一个地方并能够访问$columnsandfirstAction()secondAction().

谢谢。

4

2 回答 2

5

我不建议您使用基本控制器。对于这么小的任务来说,它是过度杀伤和繁重的。由于您想在一个控制器中共享公共代码,请改用动作助手和类属性$columns,您可以将其作为参数发送给动作助手。

在此处阅读有关操作助手的更多信息。

Action Helpers 允许开发人员将运行时和/或按需功能注入任何扩展 Zend_Controller_Action 的 Action Controller。Action Helpers 旨在最小化扩展抽象 Action Controller 以注入通用 Action Controller 功能的必要性。

于 2012-04-20T14:53:19.580 回答
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...
}

等等...

于 2012-04-20T13:01:05.783 回答