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

search for in the

$_SERVER> <Суперглобальные переменные
[edit] Last updated: Fri, 25 May 2012

view this page in

$GLOBALS

(PHP 4, PHP 5)

$GLOBALSСсылки на все переменные глобальной области видимости

Описание

Ассоциативный массив (array), содержащий ссылки на все переменные глобальной области видимости скрипта, определенные в данный момент. Имена переменных являются ключами массива.

Примеры

Пример #1 Пример $GLOBALS

<?php
function test() {
    
$foo "local variable";

    echo 
'$foo in global scope: ' $GLOBALS["foo"] . "\n";
    echo 
'$foo in current scope: ' $foo "\n";
}

$foo "Example content";
test();
?>

Результатом выполнения данного примера будет что-то подобное:

$foo in global scope: Example content
$foo in current scope: local variable

Примечания

Замечание:

Это 'суперглобальная' или автоматическая глобальная переменная. Это просто означает что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.

Замечание: Доступность переменной

В отличии от всех остальных суперглобальных переменных, $GLOBALS всегда доступна в PHP.



add a note add a note User Contributed Notes $GLOBALS
Gratcy 13-May-2012 07:03
this is technique that i always did for configuration file..

<?php
$conf
['conf']['foo'] = 'this is foo';
$conf['conf']['bar'] = 'this is bar';

function
foobar() {
    global
$conf;
   
var_dump($conf);
}

foobar();

/*
result is..

array
  'conf' =>
    array
      'foo' => string 'this is foo' (length=11)
      'bar' => string 'this is bar' (length=11)

*/
?>
therandshow at gmail dot com 29-Jun-2011 06:32
As of PHP 5.4 $GLOBALS is now initialized just-in-time. This means there now is an advantage to not use the $GLOBALS variable as you can avoid the overhead of initializing it. How much of an advantage that is I'm not sure, but I've never liked $GLOBALS much anyways.
williams at 3cisd dot com 28-Jul-2009 03:53
Better yet, use print_r.  While var_dump does detect the recursion that var_export fails on, it seems to recurse one level first for my setup.  So var_dump ends up printing all globals twice, but print_r prints them only once since it detects the recursion right away.  Serialize seems to not detect the recursion at all either, similar to var_export.
David 14-Aug-2008 05:47
Though you can use var_dump to output the value of $GLOBALS.
ravenswd at yahoo dot com 12-Aug-2008 01:02
Keep in mind that $GLOBALS is, itself, a global variable. So code like this won't work:

<?php
   
print '$GLOBALS = ' . var_export($GLOBALS, true) . "\n";
?>

This results in the error message: "Nesting level too deep - recursive dependency?"

 
show source | credits | stats | sitemap | contact | advertising | mirror sites