現在の位置: ホーム> 最新記事一覧> get_defined_constants()およびarray_filter()関数を使用して特定の定数をフィルタリングする方法は?

get_defined_constants()およびarray_filter()関数を使用して特定の定数をフィルタリングする方法は?

M66 2025-06-27

PHP開発中、多くの場合、コードの読みやすさと保守性を維持するために多くの定数を定義します。たとえば、システムレベルの構成、エラーコード、許可識別など。プロジェクトのサイズが増加すると、定数の数が徐々に増加し、特定のクラスの定数をすべての定義された定数から特定のクラスを除外する必要があります。この時点で、2つの関数get_defined_constants()array_filter()が役立ちます。

get_defined_constantsの紹介()

get_defined_constants()は、現在のスクリプトで定義されたすべての定数を取得する組み込み関数です。この関数は、定数が属するカテゴリ(コアユーザー日付など)にデフォルトでグループ化された多次元連想配列を返します。

使用例:

 print_r(get_defined_constants());

出力(パート):

 Array
(
    [Core] => Array
        (
            [E_ERROR] => 1
            [E_WARNING] => 2
        )
    [user] => Array
        (
            [MY_APP_ENV] => 'production'
        )
)

パラメーターが渡されると、分類によってグループ化された定数が返されます。 falseまたは省略された場合、平らな連想配列が返されます。

array_filter()の紹介

array_filter()は、アレイ内の各要素にコールバック関数を適用し、基準を満たす要素を除外するためのもう1つの強力なツールです。コールバック関数でtrueを返す要素は保持されます。

基本的な使用法は次のとおりです。

 $filtered = array_filter($array, function($value) {
    return $value > 10;
});

実用的:カスタム定数をフィルターします

アプリケーションの構成を識別するために、コード内のAPP_から始まる定数を定義するとします。

 define('APP_NAME', 'MyApp');
define('APP_ENV', 'production');
define('APP_DEBUG', true);
define('VERSION', '1.0.0');

App_から始まるすべての定数をフィルタリングしたいと考えています。 get_defined_constants()array_filter()を組み合わせて、次のように実装できます。

 $allConstants = get_defined_constants(true);
$userConstants = $allConstants['user'] ?? [];

$appConstants = array_filter($userConstants, function($key) {
    return strpos($key, 'APP_') === 0;
}, ARRAY_FILTER_USE_KEY);

print_r($appConstants);

出力結果:

 Array
(
    [APP_NAME] => MyApp
    [APP_ENV] => production
    [APP_DEBUG] => 1
)

このようにして、構成エクスポート、デバッグ、印刷など、便利な後続の処理のためにAPP_から始まるすべてのカスタム定数を正確に抽出します。

実用的な拡張:結果をJSONに変換し、インターフェイスに送信します

フィルタリングされた定数をJSONに変換して、リモートインターフェイス(ログシステムや構成センターなど)に送信することもできます。たとえば、 https://m66.net/api/report_constantsに送信します。