PHP 5.6.0beta1 released

get_defined_constants

(PHP 4 >= 4.1.0, PHP 5)

get_defined_constantsDevuelve un array asociativo con los nombres de todas las constantes y sus valores

Descripción

array get_defined_constants ([ bool $categorize = false ] )

Devuelve los nombres y valores de todas las constantes definidas actualmente. Esto incluye las creadas por las extensiones, así como las creadas con la función define().

Parámetros

categorize

Provoca que la función retorne un array multi-dimensional con categorias en las claves de la primera dimensión y constantes y sus valores en la segunda dimensión.

<?php
define
("MI_CONSTANTE"1);
print_r(get_defined_constants(true));
?>

El resultado del ejemplo sería algo similar a:

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
        (
            [MI_CONSTANTE] => 1
        )

)

Valores devueltos

Devuelve un array de arrays nombre_constante => valor_constante, opcionalmente agrupados por nombre de extensión registrando la constante.

Historial de cambios

Versión Descripción
5.3.1 Sólo para Windows: las constantes fundamentales se clasifican en Core, previamente mhash.
5.3.0 Constantes fundamentales se clasifican en Core, antes internal. En Windows, las constantes fundamentales se clasifican en mhash.
5.2.11 El parámetro categorize ahora funciona correctamente. Anteriormente, el parámetro categorize fue interpretado como !is_null($categorize), por lo que cualquier valor distinto de NULL fuerza a las constantes a ser clasificadas.
5.0.0 El parámetro categorize fue agregado.

Ejemplos

Ejemplo #1 Ejemplo de get_defined_constants()

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

El resultado del ejemplo sería algo similar a:

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
)

Ver también

add a note add a note

User Contributed Notes 4 notes

up
2
Bob
5 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
up
1
Anonymous
8 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] =>
)
up
1
me at gogogadgetscott dot info
8 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;
}
?>
up
-1
bimal at sanjaal dot com
1 year ago
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.
To Top