International PHP Conference Berlin 2025

get_defined_constants

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

get_defined_constants Restituisve un array associativo con i nomi di tutte le costanti ed i loro valori

Descrizione

get_defined_constants(): array

Questa funzione restituisce i nomi ed i valori di tutte le costanti attualmente definite. Queste includono sia quelle create dalle estensioni sia quelle create con la funzione define().

Ad esempio la linea seguente:

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

visualizzerà il seguente elenco:

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
)

Vedere anche: defined(), get_loaded_extensions(), get_defined_functions() e get_defined_vars().

add a note

User Contributed Notes 5 notes

up
23
Bob
16 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
19 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
-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