教义的注释加载

时间:2015-03-11 02:54:53

标签: doctrine-orm annotations

我已经定义了一个实体

将Doctrine \ ORM \ Mapping用作ORM;

/**
 * UmMemberSectionInfo
 *
 * @Table(name="um_member_section_info")
 * @Annotations\CharDependent(reflect="TbContentcharset")
 * @Entity
 */
class UmMemberSectionInfo extends \DoctrineHelper
{
//some code
}

和注释

namespace Annotations;
use Doctrine\Common\Annotations\Annotation;
/**
 * @Annotation
 * @Target("CLASS")
 */
final class CharDependent extends Annotation{
    public $reflect;
}

并将其视为

$reader = new AnnotationReader();        
$reflectionObj = new \ReflectionObject(new $entity);
$annot = $reader->getClassAnnotation($reflectionObj, '\\Annotations\\CharDependent');
var_dump($annot->reflect);
if ($annot instanceof \Annotations\CharDependent) {}

然而,它只是一个错误,The annotation "@Table" in class UmMemberSectionInfo was never imported.,当我关闭CharDependent注释并将其用作原始注释时,将不会显示该错误。问题是什么?为什么我使用原件时没问题呢?

1 个答案:

答案 0 :(得分:1)

您必须在命名空间中使用完整的注释名称:

@Doctrine\ORM\Mapping\Table

但您导入了use Doctrine\ORM\Mapping as ORM;,因此您可以使用该别名:

@ORM\Table

如果您想使用简短@Table,则必须导入Table类:

use Doctrine\ORM\Mapping\Table;

您必须对@Entity执行相同操作。