Menu
Coddy logo textTech

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

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

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

variable, defined inside a function, существует только внутри этой function. Это называется local variable:

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

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

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

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

<?php
$name = "Alice";

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

greet();
?>

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

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

challenge icon

Задание

Легко

Прочитайте две строки входных данных:

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

Создайте function с именем calculateBonus, которая принимает два parameters: $name (string) и $bonus (int).

Внутри function:

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

Вызовите function с input values и выведите возвращённый result.

Пример 1:

Если input — Alice и 50, результатом должно быть:

Alice earns 1050

Пример 2:

Если input — Bob и 200, результатом должно быть:

Bob earns 1200

Пример 3:

Если input — 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