はじめに
PHPには定数を動的に取得できる便利な関数 constant()
があります。通常、定数は直接参照しますが、文字列で定数名を指定して値を取得したい場合には constant()
が役立ちます。本記事では、constant()
の基本的な使い方と注意点を、例を交えてわかりやすく解説します。
目次
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)
解説:
define('EXAM_NUM', 123);
で定数EXAM_NUM
を定義$s = 'EXAM_NUM';
に定数名を文字列で代入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()
で取得するパターンはよく出題されます。