1. ホーム
  2. php

定数名を含む単純な変数を使ったクラス定数へのアクセス

2023-10-04 16:21:58

質問

あるクラスの定数にアクセスしようとしています。

const MY_CONST = "value";

こんな感じで、この定数の名前を保持する変数があれば。

$myVar = "MY_CONST";

MY_CONSTの値に何らかの方法でアクセスすることは可能でしょうか?

self::$myVar

は明らかに静的なプロパティを対象としているため、動作しません。 変数も機能しません。

どのように解決するのですか?

これには2つの方法があります。 定数 関数を使うか、あるいは リフレクション .

定数機能

定数関数は 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