1

在哪里以及如何设置所有控制器中可用的变量值。我不会使用 zend 注册表,也不想扩展 Zend_Controller_Action。还有其他方法吗?我只想设置:

$a = "测试";

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

类 IndexController 扩展 Zend_Controller_Action {

    公共函数 indexAction(){

            var_dump($a);
        }
}
4

2 回答 2

1

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

解决方案 1

使用会话 Zend_Session_Namespace,这里是关于如何使用 Zend_Session_Namespace 的文档

  1. 在引导程序或其他东西(无论您认为合适的地方)中设置名称空间中的值
  2. 从控制器/模型/其他中的命​​名空间中检索值

解决方案 2

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

例如

class SomeClass
{    
    static $hello = 'world';
}

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        var_dump(SomeClass::$hello);
    }
}
于 2012-12-17T16:35:54.413 回答
0

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

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

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

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

但这不是最好的方法,因为您可能会不小心将参数覆盖为所需的参数。

于 2012-12-21T14:16:10.107 回答