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
function sayHi() {
    $message = "Hello!";
    echo $message;
}

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

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

<?php
$name = "Alice";

function greet() {
    echo $name; // Error: $name is not defined inside this function
}

greet();
?>

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

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

<?php
// Читаем ввод
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));

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



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

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

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