我正在使用带有Doctrine 2的ZF和Bisna应用程序资源来将两者绑定在一起。到目前为止,我一直将我的实体,代理,存储库和服务层放在我自己的App文件夹下的库中。因此,例如,我的实体将具有App \ Entity的命名空间。这工作正常但是在ZF布局的models目录下没有我所有的实体内容似乎很奇怪。
所以,现在我正在尝试将所有内容移动到models目录中,而ZF无法再找到我的类了。我确保在application.ini配置中更改代理和映射命名空间和目录以匹配新位置和命名空间(我将实体命名空间更改为实体,并对存储库和服务层进行了相同的适当更改。
在我的登录控制器中,我调用UserService:
$userService = new Service\UserService($em);
我找回了一个致命的错误,说找不到这堂课。知道我在这里缺少什么吗?
致命错误:未找到“服务\用户服务”类...
我的UserService类上的命名空间设置为Service。该文件位于application / models / Service / UserService.php。
中namespace Service;
class UserService
{
...
}
以下是我的application.ini中的一些部分,显示了我的目录和命名空间
resources.doctrine.orm.entityManagers.default.proxy.namespace = "Proxy"
resources.doctrine.orm.entityManagers.default.proxy.dir = APPLICATION_PATH "/models/Proxy"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.mappingNamespace = "Entity"
resources.doctrine.orm.entityManagers.default.metadataDrivers.0.mappingDirs[] = APPLICATION_PATH "/models/Entity"
答案 0 :(得分:4)
您需要将Service
命名空间位置添加到自动装带器。
在Bootstrap类中尝试这样的事情
protected function _initAutoloader()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
require_once 'Doctrine/Common/ClassLoader.php';
$serviceAutoloader = new \Doctrine\Common\ClassLoader('Service', APPLICATION_PATH . '/models');
$autoloader->pushAutoloader(array($serviceAutoloader, 'loadClass'), 'Service');
return $autoloader;
}
编辑:您可能已经注册了App
命名空间,只需替换它。