使用PHP中的变量访问const

时间:2019-04-01 09:31:41

标签: php oop

让我用一个真实的例子进行解释:

class Config{
 const DB_NAME = "FOO";
}

class ConfigLoader{
 public static function get($key) {
   return Config::$key;
 }
 public static function getTest() {
   return Config::DB_NAME;
 }
}

ConfigLoader::get("DB_NAME"); // return error: Access to undeclared static property

ConfigLoader::getTest(); // It's OK! return FOO

但是我需要做类似ConfigLoader :: get(“ DB_NAME)方法

1 个答案:

答案 0 :(得分:0)

我没有找到直接访问类常量的方法。但是通过使用反射类,这是可能的。     

class ConfigLoader
{
    public static function get($key)
    {
        return (new ReflectionClass('Config'))->getConstant('DB_NAME');
        // return (new ReflectionClass('Config'))->getConstants()['DB_NAME'];
    }

    public static function getTest()
    {
        return Config::DB_NAME;
    }
}


echo ConfigLoader::get('DB_NAME'); // return error: Access to undeclared static property
  

ReflectionClass类报告有关某个类的信息。
   ReflectionClass::getConstant-获取定义的常量
   ReflectionClass::getConstants-获取常量

输出

FOO

Demo