PHP
downloads | documentation | faq | getting help | mailing lists | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

get_extension_funcs> <get_current_user
Last updated: Fri, 22 Aug 2008

view this page in

get_defined_constants

(PHP 4 >= 4.0.7, PHP 5)

get_defined_constantsDevuelve una matriz asociativa con los nombres de todas las constantes y sus valores

Descripción

array get_defined_constants ([ mixed $categorizar ] )

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

Lista de parámetros

categorizar

Puede ser pasado, causando que esta función devuelva una matriz multi-dimensional con categorías 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 seria algo similar a:

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

)

Note: El valor del parámetro categorizar es irrelevante, sólo se considera su presencia.

Valores retornados

Registro de cambios

Versión Descripción
5.0.0 El parámetro categorizar fue agregado.

Ejemplos

Example #1 Ejemplo de get_defined_constants()

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

El resultado del ejemplo seria 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
)



get_extension_funcs> <get_current_user
Last updated: Fri, 22 Aug 2008
 
add a note add a note User Contributed Notes
get_defined_constants
Bob
08-Aug-2008 04:50
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
eslindsey AT gma il dot co m
13-Aug-2007 08:12
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.
07-Jul-2007 12:38
Does not return class constants in PHP 5.
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] =>
)
me at gogogadgetscott dot info
18-Jun-2005 06:14
<?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;
}
?>

get_extension_funcs> <get_current_user
Last updated: Fri, 22 Aug 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites