Zend_Loader与Zend_Test和PHPUnit的Autoloader

Kim*_*nce 5 php zend-framework

我正在使用PHPUnit和Zend Framework进行测试,并且在自动加载方面存在一些琐碎的问题.

首先,我不知道为什么我需要在我的phpunit bootstrap.php中设置自动加载.在生产环境中,index.php文件是不是加载它?(我的测试用例是扩展Zend_Test_PHPUnit_ControllerTestCase).

其次,我很难用Zend_Loader_Autoload替换Zend_Loader.

如果我在我的bootstrap中使用此代码...

require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
Run Code Online (Sandbox Code Playgroud)

...测试运行正常,但有关Zend_Loader被弃用的警告.

如果我使用此代码,但是......

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
Run Code Online (Sandbox Code Playgroud)

测试找不到库类和致命错误结果.

在我的application.ini中,我有一行autoloaderNamespaces [] ="CP_".似乎Loader类可以看到它,但不是Autoloader类.好奇...

有任何想法吗?

谢谢!

Tom*_*itt 5

PHPUnit有时使用cli/php.ini配置而不是默认配置.这可能是您的问题所在的地方,因为您可能已经添加了库包含到php.ini的路径但忽略了将它们添加到cli/php.ini.

我手动将库添加到测试引导程序而不是通过ini文件.您可以尝试在引导程序中的自动加载器行下添加类似的内容:

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath' => APPLICATION_PATH,
    'namespace' => '',
    'resourceTypes' => array(
        'cplib' => array(
            'path' => 'library/CP',
            'namespace' => 'CP_'
        ),
    ),
));
Run Code Online (Sandbox Code Playgroud)