當前位置: 首頁> 最新文章列表> 如何使用get_defined_constants()和array_filter()函數篩選特定常量?

如何使用get_defined_constants()和array_filter()函數篩選特定常量?

M66 2025-06-27

在PHP開發過程中,我們經常會定義許多常量來維護代碼的可讀性和可維護性。比如係統級配置、錯誤碼、權限標識等。隨著項目規模的擴大,常量數量逐漸增多,我們有時需要從所有定義的常量中篩選出某一類特定用途的常量。這個時候, get_defined_constants()array_filter()這兩個函數就派上了用場。

get_defined_constants()簡介

get_defined_constants()是一個內置函數,用來獲取當前腳本中所有已定義的常量。該函數返回一個多維關聯數組,默認以常量所屬的分類(如Core , user , date等)進行分組。

使用示例:

 print_r(get_defined_constants());

輸出(部分):

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

如果傳入參數true ,會返回按分類分組的常量;如果為false或省略,則返回一個扁平化的關聯數組。

array_filter()簡介

array_filter()是另一個強大的工具,用於對數組中的每個元素應用回調函數,並篩選出符合條件的元素。回調函數返回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