Ответ
$GLOBALS — это суперглобальный массив в PHP, который содержит ссылки на все переменные, определённые в глобальной области видимости скрипта. Его ключи — это имена переменных, а значения — их содержимое.
Ключевые особенности:
- Доступен из любого контекста (внутри функций, методов, классов) без необходимости использования ключевого слова
global. - Изменение элемента в
$GLOBALSнапрямую влияет на соответствующую глобальную переменную, и наоборот. - Частое использование считается антипаттерном, так как создаёт скрытые зависимости и усложняет тестирование и поддержку кода.
Пример использования:
$globalVar = 'Привет';
function testGlobals() {
// Доступ к глобальной переменной через $GLOBALS
echo $GLOBALS['globalVar']; // Выведет: Привет
// Изменение глобальной переменной
$GLOBALS['globalVar'] = 'Мир';
// Добавление новой глобальной переменной
$GLOBALS['newVar'] = 42;
}
testGlobals();
echo $globalVar; // Выведет: Мир
echo $newVar; // Выведет: 42
Альтернативы и лучшие практики:
- Явная передача аргументов в функции.
- Использование классов и свойств объектов для инкапсуляции состояния.
- Внедрение зависимостей (Dependency Injection) через конструктор или методы.
- Использование контейнеров зависимостей (например, в фреймворках Symfony, Laravel).