Суперглобальні змінні

Суперглобальні змінніСуперглобальні змінні - це вбудовані змінні, які доступні у всіх областях видимості

Опис

Деякі з предвизначених змінних в PHP є "суперглобальними", що практично означає, що вони є доступними у всіх областях видимості скрипта. Тобто не потрібно писати global $variable;, щоб отримати до них доступ всередині функції чи методу.

Такими суперглобальними змінними є:

Журнал Змін

Версія Опис
4.1.0 Вперше з'явились суперглобальні змінні в PHP.

Примітки

Зауваження: Доступність змінних

Початково, всі суперглобальні змінні є доступними, але існують директиви, що впливають на таку доступність. Детальнішу інформацію можна прочитати в описі директиви variables_order.

Зауваження: Робота з register_globals

Якщо значення для застарілої директиви register_globals встановлено в on (тобто, включено), то всі значення, з масивів суперглобальних змінних, також будуть доступними в глобальній області скрипта у вигляді окремих змінних. Наприклад, $_POST['foo'] буде також існувати як $foo.

Відповідну інформацію можна знайти в пункті ЧАПу з назвою "Який вплив має register_globals?"

Зауваження: Змінна змінних

Суперглобальні змінні не можна використовувати як змінну змінних всередині функції чи методу.

Прогляньте Також

add a note add a note

User Contributed Notes 3 notes

up
28
kitchin
10 years ago
Since PHP 5.4, you cannot use a superglobal as the parameter to a function. This causes a fatal error:

function foo($_GET) {
  // whatever
}

It's called "shadowing" a superglobal, and I don't know why people ever did it, but I've seen it out there. The easy fix is just to rename the variable $get in the function, assuming that name is unique.

There was no deprecation warning issued in previous versions of PHP, according to my testing, neither in 5.3 nor 5.2. The error messages in 5.4 are:
Fatal error: Cannot re-assign auto-global variable _GET in...
Fatal error: Cannot re-assign auto-global variable _COOKIE in...
etc.
up
-3
mife
4 years ago
// You do need global in this special situation

function get_var($varname){
  global $$varname;
  echo $$varname;
}

show_var('_POST');
up
-34
php (a) timstamp.co.uk
6 years ago
For those wondering if register_globals also makes global variables available inside functions - it doesn't.

Running this code on a PHP52 webserver with register_globals enabled, using url:
http://localhost?hello=campers

<?php
function abc() {
    echo
"in func: '$hello' \n"; // outputs "in func: '' "
}
echo
"global: '$hello' \n"; // outputs "global: 'campers' "
abc();
To Top