Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend_加载器与带有Zend_测试和PHPUnit的自动加载器_Php_Zend Framework - Fatal编程技术网

Zend_加载器与带有Zend_测试和PHPUnit的自动加载器

Zend_加载器与带有Zend_测试和PHPUnit的自动加载器,php,zend-framework,Php,Zend Framework,我正在使用PHPUnit和Zend框架进行测试,在自动加载方面遇到了一个棘手的问题 首先,我不确定为什么需要在phpunit bootstrap.php中设置自动加载。在生产环境中,index.php文件没有加载它吗?(我的测试用例扩展了Zend_test_PHPUnit_ControllerTestCase) 其次,我很难用Zend_Loader_Autoload替换Zend_Loader 如果我在引导中使用此代码 require_once "Zend/Loader.php"; Zend_Lo

我正在使用PHPUnit和Zend框架进行测试,在自动加载方面遇到了一个棘手的问题

首先,我不确定为什么需要在phpunit bootstrap.php中设置自动加载。在生产环境中,index.php文件没有加载它吗?(我的测试用例扩展了Zend_test_PHPUnit_ControllerTestCase)

其次,我很难用Zend_Loader_Autoload替换Zend_Loader

如果我在引导中使用此代码

require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
。。。测试运行正常,但有一个警告,提示Zend_Loader已被弃用

但是,如果我使用此代码

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
测试找不到库类,并导致致命错误

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

有什么想法吗


谢谢

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_'
        ),
    ),
));

谢谢tomjowitt。我在引导程序中使用autoLoader->registerNamespace('CP_')对其进行了分类。您的回答让我走上了正确的道路,特别是在使用CLI而不是apache的时候。