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