我需要像这样访问一个const:
dump (Accomodation::MAX_IMAGES);
但我只有字符串类名,但不是类本身。例如,我有这个字符串'AppBundle:Accomodation'但我没有类Accomodation
来访问它的静态属性。
对Symfony有什么想法吗?
答案 0 :(得分:1)
如果常量名称是静态的,则直接访问它:
echo $class_name::CONSTANT_NAME;
但是,如果常量名称是变量,请使用Reflection:
$rc = new ReflectionClass($class_name);
echo $rc->getConstant($const_name);
示例强>
namespace MyNs;
class A {
const C = 1;
}
$class_name = '\MyNs\A';
$c = 'C';
// method #1
echo $class_name::C, PHP_EOL;
// method #2
$rc = new \ReflectionClass($class_name);
echo $rc->getConstant('C'), PHP_EOL;
答案 1 :(得分:0)
您可以使用constant功能,如下所示:
$constant = 'MAX_IMAGES';
$className = Accomodation::class; // or AppBundle\Classes\Accomodation
$classWithConstant = sprintf('%s::%s', $className, $constant);
dump(constant($classWithConstant));
希望这个帮助