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 — Retorna uma matriz associativa com os nomes de todas as constantes e seus valores
Descrição
Retorna os nomes e os valores de todas as constantes definidas atualmente. Isto inclui aquelas criadas pelas extensões assim como as criadas com a função define().
Parâmetros
-
categorize -
Pode ser passado, modificando o retorno da função para um array multidimensional onde as categorias são as chaves da primeira dimensão e constantes e seus valores na segunda dimensão.
<?php
define("MY_CONSTANT", 1);
print_r(get_defined_constants(true));
?>O exemplo acima irá imprimir algo similar à:
Array ( [internal] => 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 ) )Nota:
O valor do parâmetro
categorizeé irrelevante, somente fornecê-lo é considerado.
Valor Retornado
Changelog
| Versão | Descrição |
|---|---|
| 5.0.0 |
O parâmetro categorize foi adicionado.
|
Exemplos
Exemplo #1 Exemplo da get_defined_constants()
<?php
print_r(get_defined_constants());
?>
O exemplo acima irá imprimir algo similar à:
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
)
Veja Também
- defined() - Confere se uma constante existe
- get_loaded_extensions() - Retorna uma matriz com os nomes de todos os módulos compilados e carregados
- get_defined_functions() - Retorna um array de todas as funções definidas
- get_defined_vars() - Retorna o array com todas variáveis definidas
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
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] =>
)
<?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;
}
?>
