Zend Framework:没有返回值和在bootstrap init中返回资源实例有什么区别?

时间:2011-07-19 08:05:05

标签: php zend-framework bootstrapping

我是这个框架的新手。 我一直在搜索如何定义自定义路由,我找到了这段代码:

protected function _initRouter(){
    $front = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();

    $router->addRoute(
            'listOnIndex',     
            new Zend_Controller_Router_Route('/list', array('controller' => 'index', 'action' => 'list'))
        );

return $router;
}

我已尝试删除返回值,但仍然有效。那是为什么?
是否真的有必要返回实例? 非常感谢你的帮助! :)

2 个答案:

答案 0 :(得分:9)

如果从名为_initSomeResource()的boostrap方法返回一个值,则返回值将“存储”在引导程序中,以便稍后检索:

$bootstrap->getResource('SomeResource')

由于bootstrap类作为invoke参数传递给控制器​​,因此您可以使用以下命令访问控制器中的这些资源:

$bootstrap = $this->getInvokeArg('bootstrap');
$someResource = $bootstrap->getResource('SomeResource');

在您的情况下,您正在配置的资源是路由器,您以后不需要访问它。所以在这种情况下,未能从_initRouter()返回它并没有伤害到你。

答案 1 :(得分:2)

在这种情况下,不需要返回$ router实例。

由于您使用单例模式检索路由器对象并通过addRoute方法配置新路由,因此添加的路由将被保存以便进一步处理(只要使用此实例)。