(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
get_defined_constants — Retourne la liste des constantes et leurs valeurs
Retourne les noms et valeurs de toutes les constantes actuellement définies. Cela inclut les constantes définies par les extensions et celles créées avec la fonction define() . En revanche, cela exclut les constantes magiques, qui sont résolues à la compilation.
categorizePermet à cette fonction de retourner un tableau multidimensionnel avec les catégories en tant que clés de la première dimension et les constantes ainsi que leurs valeurs dans la seconde dimension.
<?php
define("MY_CONSTANT", 1);
print_r(get_defined_constants(true));
?>Résultat de l'exemple ci-dessus est similaire à :
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] => 30719 [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 ) )
Retourne un tableau de constantes au format "nom de la constante" => "valeur de la constante", optionnellement groupées par le nom de l'extension ayant enregistré la constante.
Exemple #1 Exemple avec get_defined_constants()
<?php
print_r(get_defined_constants());
?>Résultat de l'exemple ci-dessus est similaire à :
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] => 30719 [TRUE] => 1 )
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 methodIf 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 sideIf 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] =>
)<?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;
}
?>