在PHP中获取dynamicselect的类常量的值
我希望能够做到这样的事情:
class ThingIDs { const Something = 1; const AnotherThing = 2; } $thing = 'Something'; $id = ThingIDs::$thing;
这不起作用。 有没有一种直截了当的方式做同等的事情? 请注意,我被困在课堂上; 它在一个我不能改写的图书馆里。 我编写的代码在命令行上带有参数,我真的很喜欢它采用符号名称而不是id号。
$id = constant("ThingIDs::$thing");
使用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 }