在PHP中获取dynamicselect的类常量的值

我希望能够做到这样的事情:

class ThingIDs { const Something = 1; const AnotherThing = 2; } $thing = 'Something'; $id = ThingIDs::$thing; 

这不起作用。 有没有一种直截了当的方式做同等的事情? 请注意,我被困在课堂上; 它在一个我不能改写的图书馆里。 我编写的代码在命令行上带有参数,我真的很喜欢它采用符号名称而不是id号。

$id = constant("ThingIDs::$thing");

http://php.net/manual/en/function.constant.php

使用reflection

 $r = new ReflectionClass('ThingIDs'); $id = $r->getConstant($thing); 

如果您使用的是名称空间,则应该在该类中包含名称空间。

 echo constant('My\Application\ThingClass::ThingConstant'); 
 <?php class Dude { const TEST = 'howdy'; } function symbol_to_value($symbol, $class){ $refl = new ReflectionClass($class); $enum = $refl->getConstants(); return isset($enum[$symbol])?$enum[$symbol]:false; } // print 'howdy' echo symbol_to_value('TEST', 'Dude'); 

如果你有这个类的引用,那么你可以这样做:

 if (defined(get_class($course). '::COURSES_PER_INSTANCE')) { // class constant is defined }