Урок 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. Там вы найдете все уроки, дополнительные материалы и практические задания.

 

Поделиться статьей:
Поддержать автора блога

Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.

Персональные рекомендации
Оставить комментарий