定数名を含む単純な変数を使用してクラス定数にアクセスする 質問する

定数名を含む単純な変数を使用してクラス定数にアクセスする 質問する

クラスの 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

おすすめ記事