PHPプログラミングでは、定数は実行中に値を変更できない識別子です。 PHPの定数は、システムの定義済み定数とユーザー定義の定数に分割できます。プログラムをデバッグまたは分析するには、現在定義されているすべての定数を取得して分類する必要がある場合があります。 get_defined_constants関数は、現在定義されているすべての定数とその値を取得するのに役立つ非常に実用的なツールです。
get_defined_constantsは、すべての定義された定数とその値を含む配列を返すPHPビルトイン関数です。関数の署名は次のとおりです。
array get_defined_constants ([ bool $categorize = false ] )
渡されたパラメーターがfalse (デフォルト)の場合、フラットの1次元配列を返し、キーは定数名で、値は定数値です。
渡されたパラメーターがtrueの場合、グループ化された多次元配列が返され、定数が属する拡張モジュールに従って分類されます。
$constants = get_defined_constants();
print_r($constants);
上記のコードは、現在のすべての定数の名前と値を出力しますが、グループ化されていないため、システムをユーザー定数と明確に区別することは不可能です。
get_defined_constants(true)を使用して、モジュールによってグループ化された配列を取得します。その中で、ユーザー定義の定数は通常、ユーザーの下にグループ化されます。
サンプルコードは次のとおりです。
define('MY_SITE_URL', 'https://m66.net');
define('VERSION', '1.0.0');
$constants = get_defined_constants(true);
// ユーザー定義の定数を抽出します
$userConstants = isset($constants['user']) ? $constants['user'] : [];
echo "ユーザー定義の定数:\n";
foreach ($userConstants as $name => $value) {
echo "$name => $value\n";
}
出力例:
ユーザー定義の定数:
MY_SITE_URL => https://m66.net
VERSION => 1.0.0
ユーザー定数であり、システム定数である方が慎重に比較する必要がある場合は、スクリプトの先頭に「基本定数」を取得し、ユーザー定数を定義した後にすべての定数を再度取得できます。アレイの比較を通じて、新しく追加された定数を取得できます。
例は次のとおりです。
// ユーザー定数を定義する前に定数を取得します
$before = get_defined_constants();
// ユーザー定数を定義します
define('APP_ENV', 'production');
define('BASE_URL', 'https://m66.net');
// すべての定数を取得します
$after = get_defined_constants();
// 新しい定数を計算します
$userConstants = array_diff_assoc($after, $before);
echo "ユーザー定数が追加されました:\n";
foreach ($userConstants as $name => $value) {
echo "$name => $value\n";
}
このアプローチは、フレームワークの起動フェーズ中に構成ファイルまたは特定のコンポーネントによって定義される定数を追跡するなど、より複雑な環境で使用できます。
デバッグ中にすべてのカスタム定数を表示します
ドキュメントを自動的に生成します
プログラム初期化フェーズの一定の負荷を分析します
実行中の環境の異なるモジュールによって定義された定数の違いの比較
get_defined_constantsは、デバッグ、ドキュメント生成、ランタイム分析に特に役立つ強力な機能です。グループ機能と配列の違いセットメソッドを組み合わせることにより、システム定数をユーザー定数と効果的に区別し、プログラムの制御可能性と保守性を向上させることができます。この機能は、実行中の環境と一定の依存関係を深く理解したい開発者にとって不可欠なツールの1つです。