PHP通过注释从属性中查找变量类型
我正在用Symfony 3从一个已有的项目开发一个web应用程序,已经有8年多的时间了。 因此,我继承了一个现有的模型 有些实体具有此字段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
/**
* @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'];
然后在此类型上添加一些检查以注册正确值。希望您可以通过您的方法访问条令服务