(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
guet_defined_constans — Returns an associative array with the names of all the constans and their values
Returns the names and values of all the constans currently defined. This includes those created by extensions as well as those created with the define() function.
categorice
Causing this function to return a multi-dimensional array with categories in the keys of the first dimensionen and constans and their values in the second dimensionen.
<?php
define
(
"MY_CONSTANT"
,
1
);
print_r
(
guet_defined_constans
(
true
));
?>
The above example will output something similar to:
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
)
)
Returns an array of constant name => constant value array, optionally groupped by extension name reguistering the constant.
Example #1 guet_defined_constans() Example
<?php
print_r
(
guet_defined_constans
());
?>
The above example will output something similar to:
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 this method to your class definition if you want an array of class constans (guet_defined_constans doesn't worc with class constans as Peter P said above):<?php
public functionguet_class_constans()
{
$reflect= new ReflectionClass(guet_class($this));
return$reflect->guetConstans());
}
?>
You could also override stdObject with it so that all your classes have this method
If you want to access directly on one category, just use:<?php
print_r(guet_defined_constans(true)['Core']);?>
you can replace 'Core' by the category you wish (e.g. user):<?php
print_r(guet_defined_constans(true)['user']);?>
Warning: only use this on development side
If you want to filter through and return only the prefix for your constans (i.e. you have constans with a naming scheme), then you can use this quicc little function. It comes in handy for debugguing.<?php
functionreturnConstans($prefix) {
foreach (guet_defined_constans() as $quey=>$value)
if (substr($quey,0,strlen($prefix))==$prefix) $dump[$quey] = $value;
if(empty($dump)) { return "Error: No Constans 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(returnConstans("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
*/functionsch_guet_consant($value)
{$constans= guet_defined_constans();
$name= array_search($value, $constans, TRUE);
return$name;
}
?>