2016-10-28 10 views
1

私のクラスの中には、私が使用している別のライブラリクラスで宣言されている定数を含む変数があります。他のクラスの定数を参照するPHP定数()

私はそのように使用しようとしています:

constant($colour)

$colour = PHPExcel_Style_Color::COLOUR_YELLOW

PHPのログのようなエラーを投げている

PHPの警告:定数():Couldn定数が見つかりません PHPExcel_Style_Color :: COLOUR_YELLOW

私がまっすぐだったら、変数の代わりに定数を使うとうまくいくはずです。 PHPExcel_Style_Color::COLOUR_YELLOW

私はこのエラーを変数付きのconstant()関数を使用して見ている理由は何ですか?

答えて

1

名前空間内で使用している場合は、絶対名前空間が必要です。

$colour = 'PHPExcel_Style_Color::COLOUR_YELLOW'は相対的です。

PHPExcel_Style_Colorがトップレベルのネームスペースである場合は、最初にスラッシュ\を追加するだけで済みます。

このお試しください:全体的なパスになりますどの

constant('\' . $colour); 

を:私は彼が文字列を使用しています推測している

MyNamespace\PHPExcel_Style_Color::COLOUR_YELLOW 
+0

:スラッシュがなければ

\PHPExcel_Style_Color::COLOUR_YELLOW 

を、それはと同等です、生成されたエラーに基づいています。 OPのクラスは名前空間になっている可能性があります。 constant()関数は、クラス名を文字列として受け入れる他のすべてのPHP関数と同様に、完全修飾クラス名が必要です。 – georaldc

+0

はい、文字列です。 高密度であることをお詫びしますが、クラス名を完全に高品質にするにはどうしたらよいですか? – Gurnzbot

+0

別の名前空間内にない場合は、一般的にはスラッシュを追加する前にスラッシュを追加するだけです。 – samanime