Though the syntax editors mark the following as error, it executes successfully under PHP, as you desire.
<?php
$user_defined_constants=get_defined_constants(true)['user'];
print_r($user_defined_constants);
?>
No errors/warnings seen.
Only the special thing here is, you are passing true to the function, and extracting the result's 'user' index directly.
get_defined_constants
(PHP 4 >= 4.1.0, PHP 5)
get_defined_constants — Restituisve un array associativo con i nomi di tutte le costanti ed i loro valori
Descrizione
array get_defined_constants
( void
)
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().
bimal at sanjaal dot com ¶
2 months ago
Bob ¶
4 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
Anonymous ¶
7 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] =>
)
me at gogogadgetscott dot info ¶
7 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;
}
?>
