Урок 13: Глобальные и локальные переменные в PHP

Я рад снова видеть вас на нашем курсе по изучению PHP. В 13-м уроке мы разберем очень важную тему, которая поможет вам лучше понять, как работают переменные в PHP. Речь пойдет о глобальных и локальных переменных, а также о том, как они взаимодействуют внутри функций. Этот урок будет насыщен практическими примерами и задачами, чтобы вы могли сразу применить полученные знания на практике.

Что такое область видимости переменных?

Прежде чем мы углубимся в глобальные и локальные переменные, давайте разберем, что такое область видимости. Область видимости (или scope) это контекст, в котором переменная может быть использована. В PHP существует два основных типа областей видимости:

  1. Глобальная область видимости — переменные, объявленные вне функций, доступны в любом месте скрипта, кроме функций.
  2. Локальная область видимости — переменные, объявленные внутри функций, доступны только внутри этих функций.

Понимание этих областей видимости крайне важно, так как оно помогает избежать ошибок и путаницы при работе с переменными.

Локальные переменные

Локальные переменные это переменные, которые объявлены внутри функции. Они существуют только в пределах этой функции и уничтожаются после ее завершения. Давайте рассмотрим пример:

<?php
function myFunction() {
    $localVar = "Я локальная переменная!";
    echo $localVar;
}

myFunction(); // Выведет: "Я локальная переменная!"
echo $localVar; // Ошибка: переменная $localVar не определена
?>

В этом примере переменная $localVar существует только внутри функции myFunction. Попытка обратиться к ней вне функции вызовет ошибку, так как в глобальной области видимости эта переменная не существует.

Глобальные переменные

Глобальные переменные это переменные, объявленные вне функций. Они доступны в любом месте скрипта, кроме функций. Чтобы использовать глобальную переменную внутри функции, нужно явно указать, что мы хотим использовать именно глобальную переменную. Для этого используется ключевое слово global.

Пример:

<?php
$globalVar = "Я глобальная переменная!";

function myFunction() {
    global $globalVar; // Указываем, что используем глобальную переменную
    echo $globalVar;
}

myFunction(); // Выведет: "Я глобальная переменная!"
?>

Если мы не укажем global $globalVar;, то PHP создаст локальную переменную с тем же именем, и глобальная переменная не будет затронута.

Использование глобальных переменных внутри функций

Теперь давайте разберем, как правильно использовать глобальные переменные внутри функций. Это важно, потому что неправильное использование глобальных переменных может привести к ошибкам и усложнить отладку кода.

Пример 1: Изменение глобальной переменной внутри функции

<?php
$counter = 0;

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

incrementCounter();
echo $counter; // Выведет: 1
?>

В этом примере мы изменяем значение глобальной переменной $counter внутри функции incrementCounter. После вызова функции значение переменной увеличивается на 1.

Пример 2: Ошибка при использовании глобальной переменной без ключевого слова global

<?php
$name = "Максим";

function sayHello() {
    echo "Привет, " . $name; // Ошибка: переменная $name не определена
}

sayHello();
?>

Здесь мы не указали, что хотим использовать глобальную переменную $name, поэтому PHP пытается найти локальную переменную с таким именем, но не находит ее, что приводит к ошибке.

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

В PHP также существуют суперглобальные переменные, которые доступны в любом месте скрипта, включая функции. Они начинаются с символа $_. Например:

  • $_GET — содержит данные, переданные через GET-запрос.
  • $_POST — содержит данные, переданные через POST-запрос.
  • $_SESSION — содержит данные сессии.
  • $_COOKIE — содержит данные cookies.

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

<?php
function showUserAgent() {
    echo "Ваш User-Agent: " . $_SERVER['HTTP_USER_AGENT'];
}

showUserAgent();
?>

Суперглобальные переменные не требуют использования ключевого слова global, так как они доступны везде.

Практические задачи

Теперь, когда мы разобрали теорию, давайте закрепим знания на практике. Вот несколько задач для вас:

Задача 1: Локальные переменные

Напишите функцию calculateSum, которая принимает два числа, складывает их и выводит результат. Убедитесь, что переменные, используемые внутри функции, являются локальными.

<?php
function calculateSum($a, $b) {
    $sum = $a + $b;
    echo "Сумма: " . $sum;
}

calculateSum(5, 10); // Выведет: "Сумма: 15"
?>

Задача 2: Глобальные переменные

Создайте глобальную переменную $message со значением «Привет, мир!». Напишите функцию showMessage, которая выводит значение этой переменной.

<?php
$message = "Привет, мир!";

function showMessage() {
    global $message;
    echo $message;
}

showMessage(); // Выведет: "Привет, мир!"
?>

Задача 3: Суперглобальные переменные

Напишите функцию showRequestMethod, которая выводит метод HTTP-запроса (GET, POST и т.д.), используя суперглобальную переменную $_SERVER.

<?php
function showRequestMethod() {
    echo "Метод запроса: " . $_SERVER['REQUEST_METHOD'];
}

showRequestMethod();
?>

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

Попробуйте решить задачи, которые я предложил и поэкспериментируйте с кодом. Если что-то нипонятно, задавайте вопросы в комментариях. Я всегда рад помочь.

А если вы хотите изучить PHP от А до Я, то рекомендую ознакомиться с полным курсом по PHP для начинающих: https://max-gabov.ru/php-dlya-nachinaushih. Там вы найдете все уроки, дополнительные материалы и практические задания.