在插件和应用程序之间传递数据的正确方法是什么?

时间:2011-04-19 23:37:04

标签: php zend-framework

在Zend Framework中,Controller插件通常用于实例化和配置每个页面都需要的资源。例如,我正在编写一个使用Zend_Auth封装我的授权方法的插件。我的插件应如何“报告”或将数据传递给我的应用程序的其他部分?我假设我应该使用Zend_Registry ...

2 个答案:

答案 0 :(得分:1)

由于Zend_Registry::set()Zend_Registry::get()会创建隐藏,难以调试且难以进行单元测试的依赖项,因此我尽量避免使用它们。

通常,插件可以修改已传递的$request对象。然后,控制器可以从$request对象中提取所需内容,并将其需要的内容传递到服务,模型,视图等中。

答案 1 :(得分:0)

如果用户无法访问他所询问的页面,我在同一问题的项目中所做的是重定向到错误页面

问题是给错误页面提供错误描述和异常以及所有内容,格式与ZF内部相同(你知道在你的ErrorController中你可以访问错误信息)。

我所做的是进入ZF代码并查看数据的格式化(数组和类,但没有太复杂),并以相同的方式将我们的信息提供给ErrorController。

想法是将错误信息添加为请求参数,请参阅下面的标准ErrorController如何从ErrorHandler插件中获取信息。

ZF文档中的标准ErrorController:

class ErrorController extends Zend_Controller_Action
{
    public function errorAction()
    {
        $errors = $this->_getParam('error_handler');
        switch ($errors->type) {
            [...]
        }
    }
}

我没有代码可以帮助你更多地了解这一点,但这是我知道有用的领导。