Php 在性状中使用反射法

Php 在性状中使用反射法,php,symfony,reflection,Php,Symfony,Reflection,我有15个实体类,我想把getEntityName静态函数放在其中,但我不想重复代码,我的一些实体扩展了与供应商相关的类,所以我不能从这些实体中扩展抽象类。我想用特质 <?php namespace FrontendBundle\Traits\Entity; trait GetEntityNameTrait { public static function getEntityName() { return str_replace('\\', '\\\\',

我有15个实体类,我想把getEntityName静态函数放在其中,但我不想重复代码,我的一些实体扩展了与供应商相关的类,所以我不能从这些实体中扩展抽象类。我想用特质

<?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'));
            }
        }
    }