0

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

我自己的图书馆 PWS 位于图书馆文件夹中。

要覆盖 FrontController 资源,我有以下文件 PWS/Application/Resource/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 而不是我自己的资源。

这并不紧急但很烦人:)

4

2 回答 2

0

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

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

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

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

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

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

于 2011-05-19T11:51:52.277 回答
0

资源是否区分大小写?我知道它是“Frontcontroller”而不是“FrontController”。
也许试试看?这里没有太多其他内容...... :]

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

于 2011-05-17T20:33:33.107 回答