Menu
Coddy logo textTech

Variable Scope

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

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

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

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

sayHi();
echo $message; // Error: $message doesn't exist here
?>

Переменная $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 (строку) и $bonus (целое число) в качестве параметров
// - Создайте локальную переменную $baseSalary со значением 1000
// - Рассчитайте общую зарплату и верните "[name] earns [total]"



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

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

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

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