Перейти к содержимому

Понимание суперглобальных переменных PHP и переменной $_GLOBALS

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

В этой статье мы подробнее рассмотрим переменную $GLOBALS и способы её использования в программировании на PHP.

Что такое суперглобальные переменные PHP?

Суперглобальные переменные в PHP — это специальные переменные, доступные во всех областях видимости скрипта PHP. Это означает, что к ним можно обратиться из любой функции, класса или файла, не объявляя их явно как глобальные.

Ниже приведены суперглобальные переменные в PHP:

  • $_GET: содержит данные, переданные скрипту через строку запроса URL.
  • $_POST: содержит данные, переданные скрипту при отправке формы.
  • $_COOKIE: содержит данные, переданные скрипту через cookies.
  • $_SESSION: содержит данные, сохраненные в сессии пользователя.
  • $_REQUEST: содержит данные, переданные скрипту через строку запроса URL, отправку формы или cookies.
  • $_SERVER: содержит информацию о сервере и среде выполнения.
  • $_ENV: содержит информацию об окружении.
  • $GLOBALS: содержит ссылку на все глобальные переменные, определенные в скрипте PHP.

Что представляет собой переменная $GLOBALS в PHP?

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

Вот пример того, как переменная $GLOBALS может использоваться для доступа к глобальной переменной:

Пример на PHP: использование переменной $GLOBALS для доступа к глобальной переменной

php
<?php

$x = 10;
$y = 20;

function add() {
  global $x, $y;
  return $x + $y;
}

echo add(); // 30

echo $GLOBALS['x']; // 10
echo $GLOBALS['y']; // 20

?>

В этом примере функция add() использует ключевое слово global для доступа к переменным $x и $y. Однако вместо ключевого слова global вы также можете получить доступ к этим переменным через $GLOBALS.

Как использовать переменную $GLOBALS в PHP

Переменная $GLOBALS — это мощный инструмент в программировании на PHP, который позволяет получать доступ к глобальным переменным из любой части скрипта. Вот несколько способов использования $GLOBALS:

Доступ к глобальным переменным

Как мы видели в предыдущем примере, вы можете использовать переменную $GLOBALS для доступа к любой глобальной переменной, определенной в вашем скрипте. Вот еще один пример:

Пример на PHP: доступ к любой глобальной переменной, определенной в скрипте

php
<?php

$name = "John Doe";

function greeting() {
  global $name;
  echo "Hello, " . $name;
}

greeting(); // Hello, John Doe

echo $GLOBALS['name']; // John Doe

?>

Изменение глобальных переменных

Переменная $GLOBALS также может использоваться для изменения глобальных переменных. Это может быть полезно, если вам нужно внести изменения в глобальную переменную изнутри функции или класса.

Вот пример:

Пример на PHP: изменение глобальных переменных

php
<?php

$counter = 0;

function increment() {
  global $counter;
  $counter++;
}

increment();
echo $counter; // 1

echo "\n";

$GLOBALS['counter'] = 10;
echo $counter; // 10

?>

В этом примере функция increment() увеличивает значение переменной $counter. Однако вы также можете изменить значение переменной $counter напрямую через $GLOBALS.

Передача переменных между функциями и классами

Переменная $GLOBALS также может использоваться для передачи переменных между функциями и классами. Это может быть полезно, если вам нужно обмениваться данными между разными частями скрипта.

Вот пример:

Пример на PHP: передача глобальных переменных между функциями и классами

php
<?php

$data = array("name" => "John Doe", "age" => 30);

function display_data() {
  global $data;
  print_r($data);
}

class User {
  function show_data() {
    global $data;
    print_r($data);
  }
}

display_data(); // Array ( [name] => John Doe [age] => 30 )

$user = new User();
$user->show_data(); // Array ( [name] => John Doe [age] => 30 )

$GLOBALS['data']['email'] = "[email protected]";

display_data(); // Array ( [name] => John Doe [age] => 30 [email] => [email protected] )
$user->show_data(); // Array ( [name] => John Doe [age] => 30 [email] => [email protected] )

?>

В этом примере функция display_data() и класс User оба обращаются к переменной $data через $GLOBALS. Это позволяет передавать переменную $data между различными частями вашего скрипта.

Заключение

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

Примечание о лучших практиках: Хотя $GLOBALS полезен, чрезмерное использование глобальных переменных в современной разработке на PHP, как правило, не рекомендуется. Рассмотрите возможность внедрения зависимостей (dependency injection), использования классов или передачи переменных в качестве аргументов функций для повышения удобства поддержки, инкапсуляции и тестируемости кода.

Практика

В PHP какие типы переменных доступны в глобальной области видимости?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.