我创建了一个条令注释
namespace FondativeGenBundleFrontAnnotation;
use DoctrineCommonAnnotationsAnnotation;
/**
* @Annotation
* @Target("PROPERTY")
*/
class ReferenceAnnotation extends Annotation {
}
use FondativeGenBundleFrontAnnotationReferenceAnnotation ;
/**
* A Driver.
*
*
*
* @ORMEntity
*
*/
class Driver {
/*
* @Reference
*/
private $name;
我得到这个异常
[语义错误]属性中的注释"@Reference"Fondative\TestBundle\Entity\Driver::$name从未导入。
一个非常常见的错误;)
包Doctrine/Annotation
通过ReflectionProperty::getDocComment()
从注释中读取注释。
问题示例:
class MyClassA
{
/**
* Foo
*/
private $foo;
/*
* Bar
*/
private $bar;
}
$ref = new ReflectionClass('MyClassA');
print sprintf(
"Comment of MyClassA::foo -> n%snn",
$ref->getProperty('foo')->getDocComment()
);
print sprintf(
"Comment of MyClassA::bar -> n%snn",
$ref->getProperty('bar')->getDocComment()
);
属性foo
有文档注释,但属性bar
没有注释,因为声明注释中存在拼写错误(一个特殊字符*
)。
在PHP中,文档注释必须从两个字符*
开始!
修复这个拼写错误,以及所有作品;)
class Driver {
/*
* @ReferenceAnnotation
*/
private $name;
或者将注释类重命名为Reference和
use FondativeGenBundleFrontAnnotationReference as Reference ;
/*
* @Reference
*/
private $name;