dynamic常量名称在PHP中
我试图dynamic创build一个常量名称,然后得到的价值。
define( CONSTANT_1 , "Some value" ) ; // try to use it dynamically ... $constant_number = 1 ; $constant_name = ("CONSTANT_" . $constant_number) ; // try to assign the constant value to a variable... $constant_value = $constant_name;
但是我发现$常量值仍然包含常量的名称,而不是VALUE。
我尝试了第二级间接以及$$constant_name
但是,这将使其variables不是一个常量。
有人可以指出这一点吗?
http://dk.php.net/manual/en/function.constant.php
echo constant($constant_name);
为了certificate这个类也可以和类常量一起工作:
class Joshua { const SAY_HELLO = "Hello, World"; } $command = "HELLO"; echo constant("Joshua::SAY_$command");
要在类中使用dynamic常量名称,可以使用reflectionfunction(自php5以来):
$thisClass = new ReflectionClass(__CLASS__); $thisClass->getConstant($constName);
例如:如果您只想过滤类中的特定(SORT_ *)常量
class MyClass { const SORT_RELEVANCE = 1; const SORT_STARTDATE = 2; const DISTANCE_DEFAULT = 20; public static function getAvailableSortDirections() { $thisClass = new ReflectionClass(__CLASS__); $classConstants = array_keys($thisClass->getConstants()); $sortDirections = []; foreach ($classConstants as $constName) { if (0 === strpos($constName, 'SORT_')) { $sortDirections[] = $thisClass->getConstant($constName); } } return $sortDirections; } } var_dump(MyClass::getAvailableSortDirections());
结果:
array (size=2) 0 => int 1 1 => int 2