簡體   English   中英

如何從Symfony中的字符串類名獲取類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM