定数名を含む単純な変数を使ったクラス定数へのアクセス
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
関連
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?
-
[解決済み] Pythonにはクラス内に「プライベート」変数がある?
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] Javaにおけるprivate static variableの用途は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】DateTimeクラスのオブジェクトを文字列に変換できない
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。