Doctrine orm 存储库(条令\ORM\EntityRepository)不接受条令\Persistence\ObjectRepository

Doctrine orm 存储库(条令\ORM\EntityRepository)不接受条令\Persistence\ObjectRepository,doctrine-orm,doctrine,phpstan,Doctrine Orm,Doctrine,Phpstan,从1.0升级到1.3时,我遇到了静态代码分析的问题 Repository (Doctrine\ORM\EntityRepository) does not accept Doctrine\Persistence\ObjectRepository. 问题在于这个 <?php declare(strict_types=1); namespace Appbundle\Repository\Company; class Co

从1.0升级到1.3时,我遇到了静态代码分析的问题

Repository (Doctrine\ORM\EntityRepository) does not accept                    
         Doctrine\Persistence\ObjectRepository.     
问题在于这个

<?php
declare(strict_types=1);

namespace Appbundle\Repository\Company;

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工作,但getRepository的返回类型为ObjectRepository,因此不兼容。 使用1.0版。有人知道可能是什么吗

此错误是正确的。EntityManagerInterface从ObjectManager接口继承getRepository方法,其中

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

您可能应该键入其他内容的提示,例如EntityManager。

此错误是正确的。EntityManagerInterface从ObjectManager接口继承getRepository方法,其中

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


您可能应该键入其他内容的提示,例如EntityManager。

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


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


您有什么版本的PHPStan和PHPStan原则?您有什么版本的PHPStan和PHPStan原则?EntityManager和EntityRepository是两个完全不同的东西。我发现这是一个知识,但这是在Doctrine/Persistence 1.3版中完成的。我的意思是你应该键入提示EntityManager而不是EntityManager接口。有趣的事情。EntityManager不接受EntityManager接口。例如,条令\ORM\EntityManager不接受条令\ORM\EntityManager接口。是的,这是有道理的。我在任何地方都使用条令\ORM\EntityManager,它是有效的。EntityManager和EntityRepository是两个完全不同的东西。我发现这是一个知识,但这是在Doctrine/Persistence 1.3版中完成的。我的意思是你应该键入提示EntityManager而不是EntityManager接口。有趣的事情。EntityManager不接受EntityManager接口。例如,条令\ORM\EntityManager不接受条令\ORM\EntityManager接口。是的,这是有道理的。我在任何地方都使用条令\ORM\EntityManager,而且它很有效。