get_defined_constants

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

get_defined_constantsすべての定数の名前とその値を連想配列として返す

説明

get_defined_constants(bool $categorize = false): array

現在定義されている全ての定数の名前と値を返します。返される値には、 拡張モジュールにより作成された定数や 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
)

参考

add a note

User Contributed Notes 7 notes

up
23
Bob
15 years ago
Add this method to your class definition if you want an array of class constants (get_defined_constants doesn't work with class constants as Peter P said above):

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

You could also override stdObject with it so that all your classes have this method
up
12
R4FC0R3
6 years ago
If you want to access directly on one category, just use:

<?php

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

?>

you can replace 'Core' by the category you wish (e.g. user):

<?php

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

?>

Warning: only use this on development side
up
9
Anonymous
18 years ago
If you want to filter through and return only the prefix for your constants (i.e. you have constants with a naming scheme), then you can use this quick little function. It comes in handy for debugging.

<?php
function returnConstants ($prefix) {
foreach (
get_defined_constants() as $key=>$value)
if (
substr($key,0,strlen($prefix))==$prefix) $dump[$key] = $value;
if(empty(
$dump)) { return "Error: No Constants found with prefix '".$prefix."'"; }
else { return
$dump; }
}
?>

Example:

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

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

Will return:

Array
(
[SITENAME_OPTIONONE] => 1
[SITENAME_OPTIONTWO] =>
)
up
5
me at gogogadgetscott dot info
18 years ago
<?php
/**
* Convert constant value into string name.
*
* @param mixed Constant value.
* @return string Constant name.
* @access public
*/
function sch_get_consant($value)
{
$constants = get_defined_constants();
$name = array_search($value, $constants, TRUE);
return
$name;
}
?>
up
0
azizaptechnorth at gmail dot com
16 hours ago
salute to all those developers which has gave advice and problems solving 18 years ago or 15 years ago for beginners and student.
up
0
azizaptechnorth at gmail dot com
16 hours ago
salute to all those developers which has gave advice and problems solving 18 years ago or 15 years ago for beginners and student.
up
-3
S-Tian
2 years ago
If you want to create a static method that you can copy and paste into each class you have constants created, you can use:

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

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