🐘
PHPで「それまでに宣言されている定数」をすべて表示する方法
get_defined_constants()関数の利用
PHPでは、現在定義されているすべての定数を配列として取得するには get_defined_constants()
関数を使用します。この関数は、グローバルに定義された定数だけでなく、拡張モジュールやユーザー定義の定数も含めて一覧で取得できます。
基本的な使い方
print_r(get_defined_constants());
このように記述すると、その時点で定義されているすべての定数(定数名 => 値)が連想配列で表示されます。
ユーザー定義定数のみを表示したい場合
get_defined_constants(true)
のように引数に true
を渡すと、定数がカテゴリごとに分類された多次元配列が返ります。その中の 'user'
キーにユーザー定義定数が格納されています。
$all_constants = get_defined_constants(true);
print_r($all_constants['user']);
出力例
Array
(
[MY_CONSTANT] => 1
[ANOTHER_CONST] => 'sample'
)
この方法で、「それまでに宣言されている定数」をすべて確認できます。
PHPの定数カテゴリと「システムのもの」について
get_defined_constants(true) を使うと、定数がカテゴリごとに分類されて取得できます。
この「カテゴリ」は、PHP本体や拡張モジュールごと、そしてユーザー定義(user)などに分かれています。
主な「システムのもの」カテゴリ
一般的に、以下のカテゴリはPHP本体や拡張モジュールが自動的に定義する「システムのもの」です。
これらはPHPのバージョンやインストールされている拡張によって多少異なりますが、どの環境でも共通して存在します。
カテゴリ名 | 内容例 |
---|---|
Core | PHP本体が定義する定数(E_ERROR, PHP_VERSIONなど) |
pdo | PDO拡張が定義する定数 |
date | 日付・時刻関連の拡張定数 |
libxml | libxml拡張の定数 |
standard | 標準拡張の定数 |
Reflection | Reflection拡張の定数 |
SPL | SPL(Standard PHP Library)の定数 |
... | その他、拡張名と同じカテゴリ名 |
user カテゴリのみがユーザー定義の定数となります。
「システムのもの」を無視するには
-
get_defined_constants(true)
の戻り値配列から'user'
以外のカテゴリを無視すれば、システム定数を除外できます。 - つまり、
$all['user']
だけを使えばOKです。
まとめ
-
Core や pdo など、
user
以外のカテゴリはすべてシステムや拡張の定数です。 - ユーザー定義定数だけを扱いたい場合は、
get_defined_constants(true)['user']
を利用し、それ以外のカテゴリは無視してください。
Discussion