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

search for in the

get_extension_funcs> <get_current_user
Last updated: Fri, 20 Jun 2008

view this page in

get_defined_constants

(PHP 4 >= 4.0.7, PHP 5)

get_defined_constants — Retourne la liste des constantes et leurs valeurs

Description

array get_defined_constants ([ mixed $categorize ] )

Retourne les noms et valeurs des constantes déjà définies. Cela inclut les constantes créées par les extensions, et celles créées avec la fonction define().

Liste de paramètres

categorize

Peut être passé, permettant à cette fonction de retourner un tableau multidimensionnel avec les catégories en tant que clés de la première dimension et les constantes ainsi que leurs valeurs dans la seconde dimension.

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

L'exemple ci-dessus va afficher quelque chose de similaire à :

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
        )

)

Note: La valeur du paramètre categorize n'est pas révélatrice, seule sa présence est considérée.

Valeurs de retour

Historique

Version Description
5.0.0 Le paramètre categorize a été ajouté.

Exemples

Exemple #1 Exemple avec get_defined_constants()

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

L'exemple ci-dessus va afficher quelque chose de similaire à :

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, 20 Jun 2008
 
add a note add a note User Contributed Notes
get_defined_constants
ryan at crystaldawn dot net
21-Feb-2008 04:42
I'm not so sure eslindsey AT gma il dot co m is correct.  From my experience, using constance in an array works fine if you think about it as a math constant.  Take the example below, it works on 4.x and 5.x

<?
//Our define, probably located in a config file somewhere
define('SomeName', 3);

//The call to our function
test();

//The function itself
function test()
{

$test = array('10', '13', 'whatever', 'somethingelse', '85');

echo
$hithere = $test[(SomeName)];
echo
"\n";
echo
"\n";
}
?>
eslindsey AT gma il dot co m
13-Aug-2007 10: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 02:38
Does not return class constants in PHP 5.
05-Jan-2006 08: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 08: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, 20 Jun 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites