2024 日本 PHP 研討會

get_defined_constants

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

get_defined_constants傳回包含所有常數名稱及其值的關聯式陣列

說明

get_defined_constants(布林值 $categorize = false): 陣列

傳回目前已定義的所有常數的名稱和值。這包括由擴充功能建立的常數,以及使用 define() 函式建立的常數。

參數

categorize

使此函式傳回一個多維陣列,其中第一維的鍵為類別,第二維為常數及其值。

<?php
define
("MY_CONSTANT", 1);
print_r(get_defined_constants(true));
?>

以上範例會輸出類似以下的內容:

Array
(
    [Core] => Array
        (
            [E_ERROR] => 1
            [E_WARNING] => 2
            [E_PARSE] => 4
            [E_NOTICE] => 8
            [E_CORE_ERROR] => 16
            [E_CORE_WARNING] => 32
            [E_COMPILE_ERROR] => 64
            [E_COMPILE_WARNING] => 128
            [E_USER_ERROR] => 256
            [E_USER_WARNING] => 512
            [E_USER_NOTICE] => 1024
            [E_ALL] => 2047
            [TRUE] => 1
        )

    [pcre] => Array
        (
            [PREG_PATTERN_ORDER] => 1
            [PREG_SET_ORDER] => 2
            [PREG_OFFSET_CAPTURE] => 256
            [PREG_SPLIT_NO_EMPTY] => 1
            [PREG_SPLIT_DELIM_CAPTURE] => 2
            [PREG_SPLIT_OFFSET_CAPTURE] => 4
            [PREG_GREP_INVERT] => 1
        )

    [user] => Array
        (
            [MY_CONSTANT] => 1
        )

)

回傳值

返回一個常數名稱 => 常數值的陣列,也可以選擇性地根據註冊常數的擴充名稱進行分組。

範例

範例 #1 get_defined_constants() 範例

<?php
print_r
(get_defined_constants());
?>

以上範例會輸出類似以下的內容:

Array
(
    [E_ERROR] => 1
    [E_WARNING] => 2
    [E_PARSE] => 4
    [E_NOTICE] => 8
    [E_CORE_ERROR] => 16
    [E_CORE_WARNING] => 32
    [E_COMPILE_ERROR] => 64
    [E_COMPILE_WARNING] => 128
    [E_USER_ERROR] => 256
    [E_USER_WARNING] => 512
    [E_USER_NOTICE] => 1024
    [E_ALL] => 2047
    [TRUE] => 1
)

參見

新增註解

使用者貢獻的註解 5 則註解

Bob
16 年前
如果您想要一個類別常數的陣列,請將此方法添加到您的類別定義中(正如上面 Peter P 所說的,get_defined_constants 不適用於類別常數)

<?php
public function get_class_constants()
{
$reflect = new ReflectionClass(get_class($this));
return
$reflect->getConstants());
}
?>

您也可以用它覆蓋 stdObject,以便所有類別都具有此方法
R4FC0R3
6 年前
如果您想直接訪問某個類別,只需使用

<?php

print_r
(get_defined_constants(true)['Core']);

?>

您可以將 'Core' 替換為您想要的類別(例如 user)

<?php

print_r
(get_defined_constants(true)['user']);

?>

警告:僅在開發端使用
匿名
18 年前
如果您想要篩選並僅返回常數的前綴(例如,您的常數具有命名方案),則可以使用這個快速的小函式。它在除錯時很方便。

<?php
函數 returnConstants($prefix) {
foreach (
get_defined_constants() as $key => $value)
if (
substr($key, 0, strlen($prefix)) == $prefix) $dump[$key] = $value;
if (empty(
$dump)) { return "錯誤:找不到以此 '" . $prefix . "' 為前綴的常數"; }
else { return
$dump; }
}
?>

範例

<?php
define
("SITENAME_OPTION_ONE", true);
define("SITENAME_OPTION_TWO", false);
define("SITENAME_URL", "foo");

print_r(returnConstants("SITENAME_OPTION"));
?>

將會返回

陣列
(
[SITENAME_OPTIONONE] => 1
[SITENAME_OPTIONTWO] =>
)
me at gogogadgetscott dot info
19 年前
<?php
/**
* 將常數值轉換為字串名稱。
*
* @param mixed 常數值。
* @return string 常數名稱。
* @access public
*/
函數 sch_get_consant($value)
{
$constants = get_defined_constants();
$name = array_search($value, $constants, TRUE);
return
$name;
}
?>
S-Tian
2 年前
如果您想建立一個靜態方法,可以複製並貼到每個具有已建立常數的類別中,您可以使用

<php
public static function get_class_constants(): array
{
$reflect = new ReflectionClass(self::class);

return $reflect->getConstants();
}
?>
To Top