让我用一个真实的例子进行解释:
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)方法
答案 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。