PHP通过注释从属性中查找变量类型

PHP通过注释从属性中查找变量类型,php,symfony,doctrine-orm,annotations,Php,Symfony,Doctrine Orm,Annotations,我正在用Symfony 3从一个已有的项目开发一个web应用程序,已经有8年多的时间了。 因此,我继承了一个现有的模型 有些实体具有此字段 /** * @var integer * * @ORM\Column(name="FourID_Site", type="bigint", nullable=true) */ private $fouridSite; 还有一些人 /** * @var \FourListe * * @ORM\ManyToOne(targetEntity="Fo

我正在用Symfony 3从一个已有的项目开发一个web应用程序,已经有8年多的时间了。 因此,我继承了一个现有的模型

有些实体具有此字段

/**
 * @var integer
 *
 * @ORM\Column(name="FourID_Site", type="bigint", nullable=true)
 */
private $fouridSite;
还有一些人

/**
 * @var \FourListe
 *
 * @ORM\ManyToOne(targetEntity="FourListe")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="FourID_Site", referencedColumnName="FourID")
 * })
 */
private $fouridSite;
我有一个在所有持久化和刷新之前调用的方法,用于自动更新某些字段

    if (property_exists(get_class($entity), 'fouridSite')) {
        $entity->setFouridSite($this->current_user->getFouridSiteutilisateur());
    }
    if (property_exists(get_class($entity), 'majlogin')) {
        $entity->setMajlogin($this->current_user->getLogin());
    }
    if (property_exists(get_class($entity), 'majdate')) {
        $entity->setMajdate(new \DateTime());
    }
问题:当$fouridSite是一个整数时,此代码会抛出一个错误,因为我无法分配一个实体($This->current\u user->getFouridSiteUsiateur()返回一个FourListe实体)。这是正常的

本机php方法get type()无法在本例中使用,因为它返回NULL

所以,有一种方法可以通过注释知道$fourisSite是实体还是整数


感谢您的想法或潜力任何建议

根据更新挂钩的位置,您可以使用此信息了解专栏的类型:

$em = $this->get('doctrine')->getManager();
$metadata = $em->getClassMetadata(get_class($entity));
$fieldMetadata = $metadata->fieldMappings['fouridSite'];

// Catch the type
$fieldType = $fieldMetadata['type'];
然后在此类型上添加一些检查以注册正确值。
希望您可以通过您的方法访问条令服务