在我的Zend Framework项目中,我使用了一些自定义资源类型,我在应用程序的Bootstrap.php文件中添加了资源加载器。
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoloader()
{
$resourceLoader = $this->getResourceLoader();
$resourceLoader->addResourceTypes(array(
'infrastructure' => array(
'namespace' => 'Infrastructure',
'path' => 'infrastructure/',
),
'interfaces' => array(
'namespace' => 'Interface',
'path' => 'interfaces/',
),
'default' => array(
'namespace' => '',
'path' => '/',
),
));
}
...
}
我可以在运行应用程序时自动加载这些资源,但是在运行PHPUnit并尝试在测试期间加载这些类时,无法找到它们。
PHP Fatal error: Class 'Wbp_Infrastructure_Persistence_InMemory_TagRepository' not found in /var/www/worldsbestprizes/tests/library/Mbe/Validate/TaggedUriTest.php on line 37
tests / bootstrap.php文件看起来像这样。
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Mbe_');
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
我是否应该添加一些内容以允许加载这些自定义资源类型?
答案 0 :(得分:1)
您需要使用与您在tests / bootstrap.php文件中执行的操作类似的方法注册Wbp_名称空间:
$autoloader->registerNamespace('Wbp_');