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