クラスの 1 つでクラス定数にアクセスしようとしています:
const MY_CONST = "value";
次のようにこの定数の名前を保持する変数がある場合:
$myVar = "MY_CONST";
何らかの方法で MY_CONST の値にアクセスできますか?
self::$myVar
これは静的プロパティ用なので、明らかに機能しません。また、Variable 変数も機能しません。
ベストアンサー1
これを行うには2つの方法があります。絶え間ない機能または使用反射。
定数関数
constant 関数は、define
クラス定数だけでなく、 を通じて宣言された定数でも機能します。
class A
{
const MY_CONST = 'myval';
static function test()
{
$c = 'MY_CONST';
return constant('self::'. $c);
}
}
echo A::test(); // output: myval
リフレクションクラス
2 つ目の、より手間のかかる方法は、反省することです。
$ref = new ReflectionClass('A');
$constName = 'MY_CONST';
echo $ref->getConstant($constName); // output: myval