gpt4 book ai didi

zend-framework - Zend Framework 和 Doctrine 2 - 你把你的实体放在哪里?

转载 作者:行者123 更新时间:2023-12-04 04:33:52 25 4
gpt4 key购买 nike

我正在使用 ZF 和 Doctrine 2 以及 Bisna 应用程序资源将两者联系在一起。到目前为止,我一直将我的实体、代理、存储库和服务层放在库下我自己的 App 文件夹中。因此,例如,我的实体将具有 App\Entity 的命名空间。这工作正常,但在 ZF 布局的模型目录下没有我所有的实体内容似乎很奇怪。

所以,现在我正在尝试将所有内容移动到模型目录中,而 ZF 无法再找到我的类。我确保更改 application.ini 配置中的代理和映射命名空间和目录以匹配新位置和命名空间(我将我的实体命名空间更改为实体,并对存储库和服务层进行了相同的适当更改。

在我的登录 Controller 中,我调用 UserService:

$userService = new Service\UserService($em);

我收到一个 fatal error ,说找不到该类。知道我在这里缺少什么吗?

Fatal error: Class 'Service\UserService' not found...



我的 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"

最佳答案

您需要添加 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命名空间,只需替换它。

关于zend-framework - Zend Framework 和 Doctrine 2 - 你把你的实体放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com