Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : PHP Options&Information : get_defined_constants

get_defined_constants

Returns an associative array with the names of all the constants and their values (PHP 4 >= 4.0.7, PHP 5)
array get_defined_constants ( [mixed categorize] )

Example 1834. get_defined_constants() Example

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

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
)

Code Examples / Notes » get_defined_constants

05-jan-2006 07:29

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] =>
)


eslindsey

If you need to use the values of your defined constants in strings or for example in HEREDOC syntax, use this function:
<?php
//PHP5+ only
$constarray = get_defined_constants(true);
foreach($constarray['user'] as $key => $val)
   eval(sprintf('$_CONSTANTS[\'%s\'] = \'%s\';', addslashes($key), addslashes($val)));
//PHP4+ ...this is less efficient since it defines hundreds of constants
foreach(get_defined_constants() as $key => $val)
   eval(sprintf('$_CONSTANTS[\'%s\'] = \'%s\';', addslashes($key), addslashes($val)));
?>
Once you run that you can use $_CONSTANTS['constantname'] to get the value of a constant. You'll need to erase the array and rerun the code if you define any new constants. But I found it handy when I wanted to use a couple of my defined constants in HEREDOC syntax. Don't forget: because this is not really a superglobal you'll need to globalize it if you want to use it from within a different scope, for example:
<?php
//hopefully you ran the snippet out here so that $_CONSTANTS is in global scope.
$mv = $_CONSTANTS['foo']; //works
function my_function()
{
   global $_CONSTANTS;       //without this line it won't work in here!
   $mv = $_CONSTANTS['bar']; //works thanks to previous line
}
?>


peter p.

Does not return class constants in PHP 5.

me

<?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;
}
?>


Change Language


Follow Navioo On Twitter
assert_options
assert
dl
extension_loaded
get_cfg_var
get_current_user
get_defined_constants
get_extension_funcs
get_include_path
get_included_files
get_loaded_extensions
get_magic_quotes_gpc
get_magic_quotes_runtime
get_required_files
getenv
getlastmod
getmygid
getmyinode
getmypid
getmyuid
getopt
getrusage
ini_alter
ini_get_all
ini_get
ini_restore
ini_set
main
memory_get_peak_usage
memory_get_usage
php_ini_scanned_files
php_logo_guid
php_sapi_name
php_uname
phpcredits
phpinfo
phpversion
putenv
restore_include_path
set_include_path
set_magic_quotes_runtime
set_time_limit
sys_get_temp_dir
version_compare
zend_logo_guid
zend_thread_id
zend_version
eXTReMe Tracker