从未导入自定义注释

时间:2016-05-12 09:28:31

标签: doctrine-orm symfony

我创建了一个学说注释

namespace Fondative\GenBundle\Front\Annotation;
use Doctrine\Common\Annotations\Annotation;

/**
* @Annotation
* @Target("PROPERTY")
*/
class ReferenceAnnotation extends Annotation {

}

use Fondative\GenBundle\Front\Annotation\ReferenceAnnotation ;

/**
 * A Driver.
 * 
 *
 * 
 * @ORM\Entity
 * 
 */
class Driver {
    /*
     * @Reference
     */
    private $name;

我得到了这个例外

  

[语义错误]属性中的注释“@Reference”   Fondative \ TestBundle \ Entity \ Driver :: $ name从未导入过。

2 个答案:

答案 0 :(得分:2)

一个非常常见的错误;)

Doctrine/Annotation阅读评论via ReflectionProperty::getDocComment()中的注释。

问题示例:

class MyClassA
{
    /**
     * Foo
     */
    private $foo;

    /*
     * Bar
     */
    private $bar;
}


$ref = new \ReflectionClass('MyClassA');

print sprintf(
    "Comment of MyClassA::foo -> \n%s\n\n",
    $ref->getProperty('foo')->getDocComment()
);

print sprintf(
    "Comment of MyClassA::bar -> \n%s\n\n",
    $ref->getProperty('bar')->getDocComment()
);

属性foo有文档注释,但属性bar没有注释,因为在声明注释中存在拼写错误(一个特殊的字符*)。

在PHP文档中,评论必须从两个字符*开始!

解决此错误,一切正常;)

答案 1 :(得分:0)

class Driver {
    /*
     * @ReferenceAnnotation
     */
    private $name;

或将注释类重命名为Reference和

use Fondative\GenBundle\Front\Annotation\Reference as Reference ;
     /*
     * @Reference
     */
    private $name;