$GLOBALS
(PHP 4, PHP 5, PHP 7, PHP 8)
$GLOBALS — Посилається на всі доступні змінні в глобальній області
видимості
Опис
Асоціативний масив (array), що містить посилання на всі змінні,
що визначені в глобальній області видимості скрипта. Назви змінних є ключами
цього масиву.
Приклади
Приклад #1 Використання $GLOBALS
<?php
function test()
{
$foo = "це локальна змінна";
echo '$foo в глобальній області: ' . $GLOBALS["foo"] . "\n";
echo '$foo в поточній області: ' . $foo . "\n";
}
$foo = "це глобальна змінна";
test();
?>
Поданий вище приклад виведе щось
схоже на:
$foo в глобальній області: це глобальна змінна
$foo в поточній області: це локальна змінна
Увага
Починаючи з PHP 8.1.0, дозвіл на перезапис усього масиву
$GLOBALS скасовано:
Приклад #2 Перезапис усього масиву $GLOBALS викличе
помилку.
<?php
// Генерує помилку компіляції:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset($GLOBALS);
array_pop($GLOBALS);
// ... та будь-які інші операції запису/читання-запису щодо $GLOBALS
?>
Примітки
Зауваження:
Це "суперглобальна" або
автоматична глобальна змінна. Тобто ця змінна доступна будь-де в скрипті та її
не потрібно оголошувати як global $variable;, щоб отримати
доступ до неї всередині функції чи метода.
Зауваження:
Доступність змінної
На відміну від інших
суперглобальних
змінних, $GLOBALS завжди доступна в PHP.
Зауваження:
Починаючи з PHP 8.1.0, змінна $GLOBALS тепер є копією
глобальної таблиці
символів і доступна лише для читання. Отже, глобальні змінні не можна
перезаписати за допомогою їхніх копій. Раніше ж масив
$GLOBALS мав особливий механізм роботи, що відрізнявся
від звичайних масивів і дозволяв змінювати глобальні змінні через їхню копію.