Php Symfony 4自定义批注问题@ORM\Entity不存在

Php Symfony 4自定义批注问题@ORM\Entity不存在,php,symfony,annotations,doctrine,symfony-4.3,Php,Symfony,Annotations,Doctrine,Symfony 4.3,作为我的CMS开发的一部分,我将在一段时间内发布。。我面临一个问题 错误: [语义错误]ScyLabs\GIFTDEBUNDLE\Entity\GiftCode类中的批注“@Doctrine\ORM\Mapping\Entity”不存在,或无法自动加载 我向你解释 基本上,在项目中,所有内容都是可重写的,在fileservices.yaml中进行了配置 出于简单性的明显原因,以及迫切的需要,允许我创建从它继承的第二个包。我告诉自己,做我的“重写”或对项目说:“你好,我在这里,我是一个使用我的类”

作为我的CMS开发的一部分,我将在一段时间内发布。。我面临一个问题

错误:

[语义错误]ScyLabs\GIFTDEBUNDLE\Entity\GiftCode类中的批注“@Doctrine\ORM\Mapping\Entity”不存在,或无法自动加载

我向你解释

基本上,在项目中,所有内容都是可重写的,在fileservices.yaml中进行了配置

出于简单性的明显原因,以及迫切的需要,允许我创建从它继承的第二个包。我告诉自己,做我的“重写”或对项目说:“你好,我在这里,我是一个使用我的类”对于注释来说非常方便(而且更清晰)

因此,我创建了一个自定义注释(到目前为止还不错..),您可以在这里找到

<?php
/**
 * Created by PhpStorm.
 * User: alex
 * Date: 04/11/2019
 * Time: 14:25
 */

namespace ScyLabs\NeptuneBundle\Annotation\ScyLabsNeptune;


/**
 * @Annotation
 * @Target({"CLASS"})
 * @Attributes({
 *  @Attribute("key",type="string"),
 *  @Attribute("classNameSpace",type="string"),
 * })
 */
class Override
{
    /**
     * @var string
     */
    public $key;
    /**
     * @var string
     */
    public $classNameSpace;

    public function __construct(array $opts) {

        $this->key = $opts['value'];
        $this->classNameSpace = $opts['class'];

    }
}
经过大量研究,我怀疑在我的扩展@ORM\Entity和/或//Autowire的编译阶段,它似乎还没有编译

问题是,突然间,当我得到我的个人注释(覆盖)时,我无法恢复@ORM\Entity,我也不一定能删除它,因为它不再作为一个实体工作

你为什么在这里这么做?因为后面我还有一个协同编译步骤(编译过程)

他,重新定义了教义将调用的实体,与我寄给他的画有关(你知道,我刚才定义的那个)

有了这个,我就可以用相同的名称覆盖实体

怎么办。。我承认我不能做更多


提前感谢朋友们;)

默认情况下,注释读取器不使用与类相同的自动加载程序。 您需要告诉他如何像这样加载注释类:

AnnotationRegistry::registerUniqueLoader('class_exists');

有关更多说明,请查看文档

谢谢您的回复

但它不起作用,此功能已被弃用并删除到Annotations 2.0

但是,当我尝试时,我找到了一个解决方案

当我跟随你的链接并尝试页面中的代码时,我会尝试这个函数

AnnotationRegistry#registerFile($file)
对于get@ORM\Entity文件路径,我使用

new \ReflectionClass(ORM\Entity::class);
还有,这项工作。 我删除了
AnnotationRegistry#registerFile($file)
函数,并完成了这项工作

谢谢你的帮助;) 你是最好的

$container->addCompilerPass(new ResolveDoctrineTargetEntitiesPass(),PassConfig::TYPE_BEFORE_OPTIMIZATION,1000);
AnnotationRegistry::registerUniqueLoader('class_exists');
AnnotationRegistry#registerFile($file)
new \ReflectionClass(ORM\Entity::class);