Repository (DoctrineORMEntityRepository) does not accept D



当将条令/持久性从1.0升级到1.3时,我遇到了静态代码分析问题。

Repository (DoctrineORMEntityRepository) does not accept                    
DoctrinePersistenceObjectRepository.     

问题出在这个上

<?php
declare(strict_types=1);
namespace AppbundleRepositoryCompany;
class CompanyRepository
{
/**
* @var EntityManagerInterface
*/
private $entityManager;
/**
* @var EntityRepository
*/
private $entityRepository;
/**
* @var ProfileRepository
*/
private $profileRepository;
public function __construct(
EntityManagerInterface $entityManager,
) {
$this->entityManager = $entityManager;
$this->entityRepository = $entityManager->getRepository(Company::class);
}

该代码的工作原理是getRepository重用EntityRepository,但getReposiry的返回类型是ObjectRepository,并且不兼容。使用版本1.0。有人知道可能是什么吗?

此错误是正确的。EntityManagerInterfaceObjectManager接口继承了getRepository方法,其中ObjectRepository是类型提示的。

因此,您不能依赖于从方法返回EntityRepository,因为实现可以选择只返回ObjectRepository

您可能应该为其他内容键入hint,比如EntityManager

好的,所以我发现这是由于Doctrine更改了名称空间。这是一个已报告的错误。

https://github.com/doctrine/orm/pull/7997https://github.com/doctrine/orm/pull/7953

相关内容

  • 没有找到相关文章

最新更新