現在の位置: ホーム> 最新記事一覧> get_defined_constants()ネストされた配列を返すのはなぜですか?

get_defined_constants()ネストされた配列を返すのはなぜですか?

M66 2025-05-20

PHP開発中、 get_defined_constants()は、定義されたすべての定数を返す非常に便利な関数です。ただし、多くの開発者が最初にそれを使用している場合、その返品結果に混乱するのは、なぜこの関数がキー価値ペアの単純なリストの代わりにネストされた配列を返すのはなぜですか?

関数の紹介

get_defined_constants()は、現在のスクリプト内のすべての定義された定数を返す組み込み関数です。構文は次のとおりです。

 array get_defined_constants ([ bool $categorize = false ] )

get_defined_constants()を呼び出し、パラメーター$ caltaorize = trueに渡すと、定数の「分類」によってネストされた配列を返します。パラメーターが明示的に渡されない場合でも、一部の環境では、デフォルトでネストされた構造を返す場合があります。

ネストされたアレイを返すのはなぜですか?

PHPには、コア言語、拡張機能、ユーザーのカスタマイズ、その他の側面をカバーする定数には多くのタイプがあります。この情報をより明確に表示するために、PHPは定数を整理する分類方法を提供します。使用する場合:

 print_r(get_defined_constants(true));

次のような出力構造が表示されます。

 Array
(
    [Core] => Array
        (
            [E_ERROR] => 1
            [E_WARNING] => 2
            ...
        )

    [date] => Array
        (
            [DATE_ATOM] => Y-m-d\TH:i:sP
            ...
        )

    [user] => Array
        (
            [MY_CUSTOM_CONST] => 123
        )
)

このネストされた配列構造により、どの定数が拡張機能によって提供され、ユーザー定義されているコアモジュールによって定義されている定数を理解しやすくなります。この組織は、特に複数の拡張機能が使用されている大規模なプロジェクトや環境で、デバッグやトラブルシューティングの問題に役立ちます。

純粋なリストを取得したい場合はどうなりますか?

分類を気にせずに定数の簡単なリストを取得したい場合は、パラメーターをfalse (またはパラメーターを省略)に設定できます。

 $constants = get_defined_constants(false);
print_r($constants);

これにより、フラットアレイが返されます。たとえば、

 Array
(
    [E_ERROR] => 1
    [E_WARNING] => 2
    [DATE_ATOM] => Y-m-d\TH:i:sP
    [MY_CUSTOM_CONST] => 123
)

このアプローチは、一定の値をすばやく見つける必要がある状況、または定数を処理するときにどこから来るのか気にしない場合に適しています。

実用的なアプリケーションの例

デバッグの場合、カスタム定数が正しく定義されているかどうかを確認することができます。

 define('SITE_URL', 'https://m66.net');
$constants = get_defined_constants(true);

if (isset($constants['user']['SITE_URL'])) {
    echo "絶え間ない SITE_URL 定義されています,値はです:" . $constants['user']['SITE_URL'];
}

このようにして、プロジェクトの一定の命名競合の問題を回避するために、特定の定数の定義ソースを明確に見つけることができます。

結論

PHPのget_defined_constants()がネストされたアレイを返す理由は、特に定数のソースを明確に区別できる大規模システムで、読みやすさと保守性を高めるためです。一見複雑に見えますが、その構造と目的を理解すると、開発者の手の強力なツールになります。