《PHP8上級試験対策》constant()関数で定数を動的に取得する方法

  • URLをコピーしました!

はじめに

PHPには定数を動的に取得できる便利な関数 constant() があります。通常、定数は直接参照しますが、文字列で定数名を指定して値を取得したい場合には constant() が役立ちます。本記事では、constant() の基本的な使い方と注意点を、例を交えてわかりやすく解説します。

キーワード:constant / 定数 / define / 動的参照 / Reflection

目次

constant()関数の基本

constant() は、文字列で指定した定数名に対応する値を返す関数です。

mixed constant(string $name)
  • 引数 $name には定数名を文字列で指定する
  • 定数が存在すれば、その値を返す
  • 存在しない定数を指定すると エラー が発生する

例:動的に定数を取得

<?php
declare(strict_types=1);
error_reporting(-1);

define('EXAM_NUM', 123);

$s = 'EXAM_NUM';
var_dump(constant($s));

実行結果:

int(123)

解説:

  1. define('EXAM_NUM', 123); で定数 EXAM_NUM を定義
  2. $s = 'EXAM_NUM'; に定数名を文字列で代入
  3. constant($s) で定数 EXAM_NUM の値 123 を取得

クラス定数も取得可能

class Test {
    const VAL = 10;
}

echo constant('Test::VAL'); // 10
  • クラス定数も "クラス名::定数名" の形式で取得可能
  • 名前空間定数も同様に文字列指定で取得できる

図解イメージ

+---------------------------+
| define('EXAM_NUM', 123)   |
+---------------------------+
            |
            v
+---------------------------+
| $s = 'EXAM_NUM'           |
+---------------------------+
            |
            v
+---------------------------+
| constant($s)              |
+---------------------------+
            |
            v
        int(123)

まとめ

  • constant()定数名を文字列で指定して値を取得するための関数
  • 動的に定数名を扱えるため、柔軟なコードが書ける
  • クラス定数・名前空間定数も対応
  • 定数が存在しない場合はエラーになるので注意

✅ 上級試験でも、変数に定数名を入れて constant() で取得するパターンはよく出題されます。

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次