Область видимости переменных
Часть раздела Основы путешествия по 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: это чистый и рекомендуемый подход, который ты уже изучил.
Это разделение действительно полезно. Оно означает, что функции не будут случайно изменять переменные в других частях вашей программы, благодаря чему код становится более предсказуемым и его легче отлаживать.
Задание
ЛегкоПрочитайте две строки входных данных:
- Имя человека (например,
Alice) - Размер бонуса в виде целого числа (например,
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);
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравненияРавенство и идентичностьЛогические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логика2Переменные и типы данных
ЧислаСтроки и кавычкиБулевы значенияСоглашения об именованииПовторение — инициализация переменныхПустые переменныеКонкатенация строкПолучение пользовательского вводаПриведение к другим типам5Условная логика
Оператор ifIf — ElseТернарный операторОператор нулевого слиянияОператор switchПовторение: принятие решений3Основные операторы
Арифметические операторыОператор остатка от деленияОператор возведения в степеньСоставное присваиваниеИнкремент/декрементПриоритет операторовПовторение — простые вычисленияОператоры строкПотренируйтесь самостоятельно: Онлайн-компилятор PHP