如何从Symfony中的字符串类名获取类

时间:2016-10-30 10:05:28

标签: php class symfony

我需要像这样访问一个const:

dump (Accomodation::MAX_IMAGES);

但我只有字符串类名,但不是类本身。例如,我有这个字符串'AppBundle:Accomodation'但我没有类Accomodation来访问它的静态属性。

对Symfony有什么想法吗?

2 个答案:

答案 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));

希望这个帮助