Что такое $GLOBALS в PHP?

«Что такое $GLOBALS в PHP?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

$GLOBALS — это суперглобальный массив в PHP, который содержит ссылки на все переменные, определённые в глобальной области видимости скрипта. Его ключи — это имена переменных, а значения — их содержимое.

Ключевые особенности:

  • Доступен из любого контекста (внутри функций, методов, классов) без необходимости использования ключевого слова global.
  • Изменение элемента в $GLOBALS напрямую влияет на соответствующую глобальную переменную, и наоборот.
  • Частое использование считается антипаттерном, так как создаёт скрытые зависимости и усложняет тестирование и поддержку кода.

Пример использования:

$globalVar = 'Привет';

function testGlobals() {
    // Доступ к глобальной переменной через $GLOBALS
    echo $GLOBALS['globalVar']; // Выведет: Привет

    // Изменение глобальной переменной
    $GLOBALS['globalVar'] = 'Мир';

    // Добавление новой глобальной переменной
    $GLOBALS['newVar'] = 42;
}

testGlobals();
echo $globalVar; // Выведет: Мир
echo $newVar;    // Выведет: 42

Альтернативы и лучшие практики:

  1. Явная передача аргументов в функции.
  2. Использование классов и свойств объектов для инкапсуляции состояния.
  3. Внедрение зависимостей (Dependency Injection) через конструктор или методы.
  4. Использование контейнеров зависимостей (например, в фреймворках Symfony, Laravel).