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 существует в основном коде, функция не может его увидеть. Чтобы использовать внешние значения в функции, передавайте их как параметры — это чистый, рекомендуемый подход, который вы уже изучили.
Это разделение на самом деле полезно. Это означает, что функции не будут случайно изменять переменные в других частях вашей программы, делая ваш код более предсказуемым и легким в отладке.
Задание
ЛегкоПрочитайте две строки ввода:
- Имя человека (например,
Alice) - Сумма бонуса как целое число (например,
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);
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators