如何获取常量的名称?
假设您在一个类中定义了一个常量:
class Foo {
const ERR_SOME_CONST = 6001;
function bar() {
$x = 6001;
// need to get 'ERR_SOME_CONST'
}
}
PHP可以吗?
假设您在一个类中定义了一个常量:
class Foo {
const ERR_SOME_CONST = 6001;
function bar() {
$x = 6001;
// need to get 'ERR_SOME_CONST'
}
}
PHP可以吗?
您可以使用反射 API 获取它们
我假设您希望根据变量的值(变量的值==常量的值)获取常量的名称。获取类中定义的所有常量,循环访问它们,并将这些常量的值与变量的值进行比较。请注意,使用此方法,如果有两个具有相同值的常量,则可能会获得所需的其他常量。
例:
class Foo {
const ERR_SOME_CONST = 6001;
const ERR_SOME_OTHER_CONST = 5001;
function bar() {
$x = 6001;
$fooClass = new ReflectionClass ( 'Foo' );
$constants = $fooClass->getConstants();
$constName = null;
foreach ( $constants as $name => $value )
{
if ( $value == $x )
{
$constName = $name;
break;
}
}
echo $constName;
}
}
ps:你介意告诉为什么你需要这个,因为它看起来很不寻常...
以下是我为实现它所做的。灵感来自扬·汉西奇。
class ErrorCode
{
const COMMENT_NEWCOMMENT_DISABLED = -4;
const COMMENT_TIMEBETWEENPOST_ERROR = -3;
/**
* Get error message of a value. It's actually the constant's name
* @param integer $value
*
* @return string
*/
public static function getErrorMessage($value)
{
$class = new ReflectionClass(__CLASS__);
$constants = array_flip($class->getConstants());
return $constants[$value];
}
}