Menu
CoddyTech

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

Часть раздела Основы путешествия по PHP на Coddy. Урок 67 из 71.

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

Переменная, определённая внутри функции, существует только в этой функции. Она называется локальной переменной:

<?php
function sayHi() {
    $message = "Hello!";
    echo $message;
}

sayHi();
echo $message; // Ошибка: $message здесь не существует
?>

Переменная $message создаётся внутри sayHi() и исчезает, когда функция завершается. Попытка обратиться к ней за пределами функции приводит к ошибке.

Аналогично, переменные, определённые вне функции, не становятся автоматически доступными внутри неё:

<?php
$name = "Alice";

function greet() {
    echo $name; // Ошибка: $name не определена внутри этой функции
}

greet();
?>

Хотя $name существует в основном коде, функция не может его видеть. Чтобы использовать внешние значения в функции, передавай их в качестве параметров: это аккуратный рекомендуемый подход, которому ты уже научился.

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

challenge icon

Задание

Легко

Считайте две строки ввода:

  1. Имя человека (например, Alice)
  2. Размер бонуса в виде целого числа (например, 50)

Создайте функцию с именем calculateBonus, которая принимает два параметра: $name (строка) и $bonus (целое число).

Внутри функции:

  • Создайте локальную переменную $baseSalary и присвойте ей значение 1000
  • Рассчитайте общую оплату, сложив $baseSalary и $bonus
  • Верните строку в формате: [name] earns [total]

Вызовите функцию с входными значениями и выведите возвращённый результат.

Пример 1:

Если входные значения — Alice и 50, вывод должен быть таким:

Alice earns 1050

Пример 2:

Если входные значения — Bob и 200, вывод должен быть таким:

Bob earns 1200

Пример 3:

Если входные значения — Emma и 0, вывод должен быть таким:

Emma earns 1000

Попробуйте сами

<?php
// Считайте входные данные
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));

// TODO: Создайте ниже функцию calculateBonus
// - Она должна принимать $name (string) и $bonus (int) в качестве параметров
// - Создайте локальную переменную $baseSalary со значением 1000
// - Рассчитайте общую сумму выплаты и верните "[name] earns [total]"



// Вызовите функцию и выведите результат
echo calculateBonus($name, $bonus);
?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор PHP