所有控制器都有变量?

时间:2012-12-17 15:49:57

标签: zend-framework

在何处以及如何设置所有控制器中可用的变量值。我不会使用zend注册表,也不想扩展Zend_Controller_Action。还有另外一种方法吗?我只想要举例:

$a = "test";

并在索引控制器中转储它:

class IndexController extends Zend_Controller_Action {

    public function indexAction(){

            var_dump($a);
        }
}

2 个答案:

答案 0 :(得分:1)

Global vars破坏了面向对象编程的目的......使用命名空间或自定义配置。

解决方案1 ​​

使用会话Zend_Session_Namespace,这里是documentation on how to Zend_Session_Namespace

  1. 设置引导程序中的命名空间中的值或某些内容(您认为合适的地方)
  2. 从控制器/模型/其他
  3. 中的名称空间中检索值

    解决方案2

    或者,您可以使用静态属性创建一些新类,并使用它的setter / getters来设置和检索值。

    E.g。

    class SomeClass
    {    
        static $hello = 'world';
    }
    
    class IndexController extends Zend_Controller_Action
    {
        public function indexAction()
        {
            var_dump(SomeClass::$hello);
        }
    }
    

答案 1 :(得分:0)

您可以向请求对象添加变量:

$this->getRequest()->setParam('a', 'hello');

然后使用以下方法检索它:

$this->getRequest()->getParam('a);

但这不是最佳方式,因为您可能会意外地将参数覆盖为所需参数。