PHP開発中、多くの場合、コードの読みやすさと保守性を維持するために多くの定数を定義します。たとえば、システムレベルの構成、エラーコード、許可識別など。プロジェクトのサイズが増加すると、定数の数が徐々に増加し、特定のクラスの定数をすべての定義された定数から特定のクラスを除外する必要があります。この時点で、2つの関数get_defined_constants()とarray_filter()が役立ちます。
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()は、アレイ内の各要素にコールバック関数を適用し、基準を満たす要素を除外するためのもう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に変換して、リモートインターフェイス(ログシステムや構成センターなど)に送信することもできます。たとえば、 https://m66.net/api/report_constantsに送信します。
関連タグ:
array_filter