在Zend Framework 2中加载自定义资源

时间:2011-05-17 19:33:06

标签: php zend-framework2

我刚开始使用Zend Framework 2.0并想加载自己的资源。

我自己的库PWS位于库文件夹中。

要覆盖FrontController资源,我有以下文件 PWS /应用/资源/ FrontController.php

<?php

namespace PWS\Application\Resource;

class FrontController extends \Zend\Application\Resource\FrontController
{

    public function init()
    {
        return parent::init()
    }
}

在我的application.ini中,我有以下相关内容:

autoLoaderNamespaces.PWS = APPLICATION_PATH "/../library/PWS"
pluginPaths.PWS\Application\Resource\ = APPLICATION_PATH "/../library/PWS/Application/Resource"

该项目使用模块,但我认为这不会影响问题。

当我调试类ResourceLoader(包含资源的硬编码路径)时,用于加载FrontController而不是我自己的资源。

这不紧急但令人讨厌:))

2 个答案:

答案 0 :(得分:0)

资源区分大小写吗?我知道它是“Frontcontroller”而不是“FrontController” 也许试一试?在这里没有其他的东西......:]

(这是我对ZF1的经验,而不是2)

答案 1 :(得分:0)

经过一些痛苦的调试后,我发现了一种加载自定义资源的方法。

在我的bootstrap文件中,我插入了以下函数:

function _initResources() 
{
     $broker = $this->getBroker();
     $broker->getClassLoader()->registerPlugin('frontcontroller', 'PWS\Application\Resource\FrontController');
}

这将使用我自己的类替换ResourceLoader中的硬编码前控制器路径。

这仍然不是我想要的,因为这样我无法从我自己的资源名称空间一次加载所有资源。而application.ini中的pluginPaths变量不起作用。但这种方式更快,因为Zend不必遍历目录来找到合适的类。

想想我必须等待包含一些文档的ZF2版本。