2016-10-30 9 views
0

内の文字列のクラス名からクラスを取得するために、どのように私はこのようにconstとしてアクセスする必要がある:symfonyの

dump (Accomodation::MAX_IMAGES); 

をしかし、私は唯一の文字列クラス名ではなく、クラス自体を持っています。たとえば、私はこの文字列 'AppBundle:Accomodation'を持っていますが、静的プロパティにアクセスするためにクラスAccomodationを持っていません。

symfonyのための任意のアイデア?定数名が静的である場合

+0

を言っていますか?ある場合、存在しないクラスの属性にどのような状況でアクセスしようとしていますか?私が誤解されている場合は、背景情報を明確にして追加してください。 –

+0

私の説明は申し訳ありません...文字列「AppBundle:Accomodation」があり、クラスAccomodation(既に存在します)が必要です。 – jmunozco

+0

あなたは、コントローラのアクションメソッドにダンプする必要がある場合は、ちょうど(あなたのケースで宿泊、)それぞれのクラスをインポートし、使用して 'AppBundle \クラスを使用します\ Accomodation'(または任意の場所あなたが宿泊クラス作成しました)既にダンプされているように書くだけで十分です: 'dump(Accomodation :: MAX_IMAGES)'。その静的プロパティはパブリックにアクセス可能である必要があります。 –

答えて

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; 
+0

SymfonyでReflectionClassを実行する方法は何ですか?とにかくあなたの返事に感謝! – jmunozco

+0

@JesusM、SymfonyはPHPで書かれたPHPフレームワークです。 [ReflectionはPHPコアの一部です](http://php.net/manual/en/reflection.installation.php)ので、Symfonyプロジェクトで自由に使用できます。 –

0

あなたはを使用することができます次のように機能:あなたは、クラスの宿泊施設が存在しないことを

$constant = 'MAX_IMAGES'; 
$className = Accomodation::class; // or AppBundle\Classes\Accomodation 
$classWithConstant = sprintf('%s::%s', $className, $constant); 
dump(constant($classWithConstant)); 

・ホープ、このヘルプ