Php Symfony 4自定义批注问题@ORM\Entity不存在
作为我的CMS开发的一部分,我将在一段时间内发布。。我面临一个问题 错误: [语义错误]ScyLabs\GIFTDEBUNDLE\Entity\GiftCode类中的批注“@Doctrine\ORM\Mapping\Entity”不存在,或无法自动加载 我向你解释 基本上,在项目中,所有内容都是可重写的,在fileservices.yaml中进行了配置 出于简单性的明显原因,以及迫切的需要,允许我创建从它继承的第二个包。我告诉自己,做我的“重写”或对项目说:“你好,我在这里,我是一个使用我的类”对于注释来说非常方便(而且更清晰) 因此,我创建了一个自定义注释(到目前为止还不错..),您可以在这里找到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中进行了配置 出于简单性的明显原因,以及迫切的需要,允许我创建从它继承的第二个包。我告诉自己,做我的“重写”或对项目说:“你好,我在这里,我是一个使用我的类”
<?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);