[英]How to get class from string class name in Symfony
我需要訪問一個這樣的常量:
dump (Accomodation::MAX_IMAGES);
但是我只有字符串類名,而沒有類本身。 例如,我有這個字符串'AppBundle:Accomodation',但是我沒有類Accomodation
來訪問其靜態屬性。
對Symfony有任何想法嗎?
如果常量名稱是靜態的,則直接訪問它:
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;
您可以按以下方式使用常量函數:
$constant = 'MAX_IMAGES';
$className = Accomodation::class; // or AppBundle\Classes\Accomodation
$classWithConstant = sprintf('%s::%s', $className, $constant);
dump(constant($classWithConstant));
希望這個幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.