Php 在性状中使用反射法
我有15个实体类,我想把getEntityName静态函数放在其中,但我不想重复代码,我的一些实体扩展了与供应商相关的类,所以我不能从这些实体中扩展抽象类。我想用特质Php 在性状中使用反射法,php,symfony,reflection,Php,Symfony,Reflection,我有15个实体类,我想把getEntityName静态函数放在其中,但我不想重复代码,我的一些实体扩展了与供应商相关的类,所以我不能从这些实体中扩展抽象类。我想用特质 <?php namespace FrontendBundle\Traits\Entity; trait GetEntityNameTrait { public static function getEntityName() { return str_replace('\\', '\\\\',
<?php
namespace FrontendBundle\Traits\Entity;
trait GetEntityNameTrait {
public static function getEntityName()
{
return str_replace('\\', '\\\\', get_parent_class());
}
}
我尝试了几种反射方法,结果都是一样的,这是错误还是不符合逻辑
其他:
get_parent_class()
get_class()
get_called_class()
__CLASS__
<?php
namespace FrontendBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FrontendBundle\EntityInterface;
use Symfony\Component\Validator\Constraints as Assert;
use FrontendBundle\Traits\Entity\GetEntityNameTrait;
/**
* Country
*
* @ORM\Table(name="country", uniqueConstraints={@ORM\UniqueConstraint(name="id_UNIQUE", columns={"id"}), @ORM\UniqueConstraint(name="iso_UNIQUE", columns={"iso"}), @ORM\UniqueConstraint(name="slug_tr_UNIQUE", columns={"slug_tr"}), @ORM\UniqueConstraint(name="slug_en_UNIQUE", columns={"slug_en"})})
* @ORM\Entity(repositoryClass="FrontendBundle\Repository\CountryRepository")
* @ORM\HasLifecycleCallbacks
*/
class Country implements EntityInterface
{
use GetEntityNameTrait;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="iso", type="string", length=2, nullable=false)
*/
private $iso;
/**
* @var string
*
* @ORM\Column(name="iso3", type="string", length=3, nullable=true)
*/
private $iso3;
/**
* @var string
*
* @ORM\Column(name="currency_code", type="string", length=3, nullable=true)
*/
private $currencyCode;
/**
* @var string
*
* @ORM\Column(name="currency_name", type="string", length=20, nullable=true)
*/
private $currencyName;
/**
* @var string
*
* @ORM\Column(name="currency_symbol", type="string", length=5, nullable=true)
*/
private $currencySymbol;
/**
* @var string
*
* @ORM\Column(name="name_en", type="string", length=80, nullable=false)
*/
private $nameEn;
/**
* @var string
*
* @ORM\Column(name="name_tr", type="string", length=80, nullable=false)
*/
private $nameTr;
/**
* @var integer
*
* @ORM\Column(name="numcode", type="smallint", nullable=true)
*/
private $numcode;
/**
* @var integer
*
* @ORM\Column(name="phonecode", type="integer", nullable=false)
*/
private $phonecode;
/**
* @var float
*
* @ORM\Column(name="latitude", type="float", precision=18, scale=10, nullable=false)
*/
private $latitude;
/**
* @var float
*
* @ORM\Column(name="longitude", type="float", precision=18, scale=10, nullable=false)
*/
private $longitude;
/**
* @var string
*
* @ORM\Column(name="slug_en", type="string", length=50, nullable=false)
*/
private $slugEn;
/**
* @var string
*
* @ORM\Column(name="slug_tr", type="string", length=50, nullable=false)
*/
private $slugTr;
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
private $createdAt;
/**
* @var \DateTime
*
* @ORM\Column(name="updated_at", type="datetime", nullable=false)
*/
private $updatedAt;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set iso
*
* @param string $iso
* @return Country
*/
public function setIso($iso)
{
$this->iso = $iso;
return $this;
}
/**
* Get iso
*
* @return string
*/
public function getIso()
{
return $this->iso;
}
/**
* Set iso3
*
* @param string $iso3
* @return Country
*/
public function setIso3($iso3)
{
$this->iso3 = $iso3;
return $this;
}
/**
* Get iso3
*
* @return string
*/
public function getIso3()
{
return $this->iso3;
}
/**
* Set currencyCode
*
* @param string $currencyCode
* @return Country
*/
public function setCurrencyCode($currencyCode)
{
$this->currencyCode = $currencyCode;
return $this;
}
/**
* Get currencyCode
*
* @return string
*/
public function getCurrencyCode()
{
return $this->currencyCode;
}
/**
* Set currencyName
*
* @param string $currencyName
* @return Country
*/
public function setCurrencyName($currencyName)
{
$this->currencyName = $currencyName;
return $this;
}
/**
* Get currencyName
*
* @return string
*/
public function getCurrencyName()
{
return $this->currencyName;
}
/**
* Set currencySymbol
*
* @param string $currencySymbol
* @return Country
*/
public function setCurrencySymbol($currencySymbol)
{
$this->currencySymbol = $currencySymbol;
return $this;
}
/**
* Get currencySymbol
*
* @return string
*/
public function getCurrencySymbol()
{
return $this->currencySymbol;
}
/**
* Set nameEn
*
* @param string $nameEn
* @return Country
*/
public function setNameEn($nameEn)
{
$this->nameEn = $nameEn;
return $this;
}
/**
* Get nameEn
*
* @return string
*/
public function getNameEn()
{
return $this->nameEn;
}
/**
* Set nameTr
*
* @param string $nameTr
* @return Country
*/
public function setNameTr($nameTr)
{
$this->nameTr = $nameTr;
return $this;
}
/**
* Get nameTr
*
* @return string
*/
public function getNameTr()
{
return $this->nameTr;
}
/**
* Set numcode
*
* @param integer $numcode
* @return Country
*/
public function setNumcode($numcode)
{
$this->numcode = $numcode;
return $this;
}
/**
* Get numcode
*
* @return integer
*/
public function getNumcode()
{
return $this->numcode;
}
/**
* Set phonecode
*
* @param integer $phonecode
* @return Country
*/
public function setPhonecode($phonecode)
{
$this->phonecode = $phonecode;
return $this;
}
/**
* Get phonecode
*
* @return integer
*/
public function getPhonecode()
{
return $this->phonecode;
}
/**
* Set latitude
*
* @param float $latitude
* @return Country
*/
public function setLatitude($latitude)
{
$this->latitude = $latitude;
return $this;
}
/**
* Get latitude
*
* @return float
*/
public function getLatitude()
{
return $this->latitude;
}
/**
* Set longitude
*
* @param float $longitude
* @return Country
*/
public function setLongitude($longitude)
{
$this->longitude = $longitude;
return $this;
}
/**
* Get longitude
*
* @return float
*/
public function getLongitude()
{
return $this->longitude;
}
/**
* Set slugEn
*
* @param string $slugEn
* @return Country
*/
public function setSlugEn($slugEn)
{
$this->slugEn = $slugEn;
return $this;
}
/**
* Get slugEn
*
* @return string
*/
public function getSlugEn()
{
return $this->slugEn;
}
/**
* Set slugTr
*
* @param string $slugTr
* @return Country
*/
public function setSlugTr($slugTr)
{
$this->slugTr = $slugTr;
return $this;
}
/**
* Get slugTr
*
* @return string
*/
public function getSlugTr()
{
return $this->slugTr;
}
/**
* Set createdAt
*
* @param \DateTime $createdAt
* @return Country
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set updatedAt
*
* @param \DateTime $updatedAt
* @return Country
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
*
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function updatedTimestamps()
{
$this->setUpdatedAt(new \DateTime('now'));
if ($this->getCreatedAt() == null) {
$this->setCreatedAt(new \DateTime('now'));
}
}
}
get\u parent\u class()
get_class()
获取名为_的类()
__阶级__
这似乎与trait无关,看看您是否意外地在FrontendBundle\entity下留下了另一个名为Country的实体namespace@DanMironis在应用程序中,只有类名称是一个国家/地区类。我检查了一下,然后直接将静态方法放在Country类中。没有问题,但如果我输入trait并在类中使用此trait,则会发生错误。嗯,奇怪,你是如何将trait插入国家实体的?顺便说一句,你的意思是get\u parent\u class()
导致此错误?get\u called\u class(),get\u class(),get\u parent\u class(),我尝试了所有这些。似乎这与trait无关,查看您是否意外地在FrontendBundle\entity下留下了另一个名为Country的实体namespace@DanMironis在应用程序中,只有类名称是一个国家/地区类。我检查了一下,然后直接将静态方法放在Country类中。没有问题,但如果我输入trait并在类中使用此trait,则会发生错误。嗯,奇怪,您如何将trait插入国家实体?顺便说一句,您的意思是get\u parent\u class()
导致此错误?get\u调用了\u class(),get\u class(),get\u parent\u class(),我都试过了。
get_parent_class()
get_class()
get_called_class()
__CLASS__
<?php
namespace FrontendBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FrontendBundle\EntityInterface;
use Symfony\Component\Validator\Constraints as Assert;
use FrontendBundle\Traits\Entity\GetEntityNameTrait;
/**
* Country
*
* @ORM\Table(name="country", uniqueConstraints={@ORM\UniqueConstraint(name="id_UNIQUE", columns={"id"}), @ORM\UniqueConstraint(name="iso_UNIQUE", columns={"iso"}), @ORM\UniqueConstraint(name="slug_tr_UNIQUE", columns={"slug_tr"}), @ORM\UniqueConstraint(name="slug_en_UNIQUE", columns={"slug_en"})})
* @ORM\Entity(repositoryClass="FrontendBundle\Repository\CountryRepository")
* @ORM\HasLifecycleCallbacks
*/
class Country implements EntityInterface
{
use GetEntityNameTrait;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="iso", type="string", length=2, nullable=false)
*/
private $iso;
/**
* @var string
*
* @ORM\Column(name="iso3", type="string", length=3, nullable=true)
*/
private $iso3;
/**
* @var string
*
* @ORM\Column(name="currency_code", type="string", length=3, nullable=true)
*/
private $currencyCode;
/**
* @var string
*
* @ORM\Column(name="currency_name", type="string", length=20, nullable=true)
*/
private $currencyName;
/**
* @var string
*
* @ORM\Column(name="currency_symbol", type="string", length=5, nullable=true)
*/
private $currencySymbol;
/**
* @var string
*
* @ORM\Column(name="name_en", type="string", length=80, nullable=false)
*/
private $nameEn;
/**
* @var string
*
* @ORM\Column(name="name_tr", type="string", length=80, nullable=false)
*/
private $nameTr;
/**
* @var integer
*
* @ORM\Column(name="numcode", type="smallint", nullable=true)
*/
private $numcode;
/**
* @var integer
*
* @ORM\Column(name="phonecode", type="integer", nullable=false)
*/
private $phonecode;
/**
* @var float
*
* @ORM\Column(name="latitude", type="float", precision=18, scale=10, nullable=false)
*/
private $latitude;
/**
* @var float
*
* @ORM\Column(name="longitude", type="float", precision=18, scale=10, nullable=false)
*/
private $longitude;
/**
* @var string
*
* @ORM\Column(name="slug_en", type="string", length=50, nullable=false)
*/
private $slugEn;
/**
* @var string
*
* @ORM\Column(name="slug_tr", type="string", length=50, nullable=false)
*/
private $slugTr;
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
private $createdAt;
/**
* @var \DateTime
*
* @ORM\Column(name="updated_at", type="datetime", nullable=false)
*/
private $updatedAt;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set iso
*
* @param string $iso
* @return Country
*/
public function setIso($iso)
{
$this->iso = $iso;
return $this;
}
/**
* Get iso
*
* @return string
*/
public function getIso()
{
return $this->iso;
}
/**
* Set iso3
*
* @param string $iso3
* @return Country
*/
public function setIso3($iso3)
{
$this->iso3 = $iso3;
return $this;
}
/**
* Get iso3
*
* @return string
*/
public function getIso3()
{
return $this->iso3;
}
/**
* Set currencyCode
*
* @param string $currencyCode
* @return Country
*/
public function setCurrencyCode($currencyCode)
{
$this->currencyCode = $currencyCode;
return $this;
}
/**
* Get currencyCode
*
* @return string
*/
public function getCurrencyCode()
{
return $this->currencyCode;
}
/**
* Set currencyName
*
* @param string $currencyName
* @return Country
*/
public function setCurrencyName($currencyName)
{
$this->currencyName = $currencyName;
return $this;
}
/**
* Get currencyName
*
* @return string
*/
public function getCurrencyName()
{
return $this->currencyName;
}
/**
* Set currencySymbol
*
* @param string $currencySymbol
* @return Country
*/
public function setCurrencySymbol($currencySymbol)
{
$this->currencySymbol = $currencySymbol;
return $this;
}
/**
* Get currencySymbol
*
* @return string
*/
public function getCurrencySymbol()
{
return $this->currencySymbol;
}
/**
* Set nameEn
*
* @param string $nameEn
* @return Country
*/
public function setNameEn($nameEn)
{
$this->nameEn = $nameEn;
return $this;
}
/**
* Get nameEn
*
* @return string
*/
public function getNameEn()
{
return $this->nameEn;
}
/**
* Set nameTr
*
* @param string $nameTr
* @return Country
*/
public function setNameTr($nameTr)
{
$this->nameTr = $nameTr;
return $this;
}
/**
* Get nameTr
*
* @return string
*/
public function getNameTr()
{
return $this->nameTr;
}
/**
* Set numcode
*
* @param integer $numcode
* @return Country
*/
public function setNumcode($numcode)
{
$this->numcode = $numcode;
return $this;
}
/**
* Get numcode
*
* @return integer
*/
public function getNumcode()
{
return $this->numcode;
}
/**
* Set phonecode
*
* @param integer $phonecode
* @return Country
*/
public function setPhonecode($phonecode)
{
$this->phonecode = $phonecode;
return $this;
}
/**
* Get phonecode
*
* @return integer
*/
public function getPhonecode()
{
return $this->phonecode;
}
/**
* Set latitude
*
* @param float $latitude
* @return Country
*/
public function setLatitude($latitude)
{
$this->latitude = $latitude;
return $this;
}
/**
* Get latitude
*
* @return float
*/
public function getLatitude()
{
return $this->latitude;
}
/**
* Set longitude
*
* @param float $longitude
* @return Country
*/
public function setLongitude($longitude)
{
$this->longitude = $longitude;
return $this;
}
/**
* Get longitude
*
* @return float
*/
public function getLongitude()
{
return $this->longitude;
}
/**
* Set slugEn
*
* @param string $slugEn
* @return Country
*/
public function setSlugEn($slugEn)
{
$this->slugEn = $slugEn;
return $this;
}
/**
* Get slugEn
*
* @return string
*/
public function getSlugEn()
{
return $this->slugEn;
}
/**
* Set slugTr
*
* @param string $slugTr
* @return Country
*/
public function setSlugTr($slugTr)
{
$this->slugTr = $slugTr;
return $this;
}
/**
* Get slugTr
*
* @return string
*/
public function getSlugTr()
{
return $this->slugTr;
}
/**
* Set createdAt
*
* @param \DateTime $createdAt
* @return Country
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set updatedAt
*
* @param \DateTime $updatedAt
* @return Country
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
*
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function updatedTimestamps()
{
$this->setUpdatedAt(new \DateTime('now'));
if ($this->getCreatedAt() == null) {
$this->setCreatedAt(new \DateTime('now'));
}
}
}