Menu
Coddy logo textTech

Default Parameter Values

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

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

Чтобы установить значение по умолчанию, присвойте его непосредственно в объявлении функции с использованием оператора =:

<?php
function greet($name = "Guest") {
    echo "Hello, $name!\n";
}

greet("Alice");
greet();
?>

Это выводит:

Hello, Alice!
Hello, Guest!

Когда вы вызываете greet("Alice"), аргумент переопределяет значение по умолчанию. Когда вы вызываете greet() без аргумента, PHP использует "Guest" вместо этого.

Вы можете комбинировать обязательные и необязательные параметры, но параметры со значениями по умолчанию должны следовать за обязательными:

<?php
function createUser($name, $role = "member") {
    return "$name is a $role";
}

echo createUser("Alice") . "\n";
echo createUser("Bob", "admin");
?>

Это выводит:

Alice is a member
Bob is a admin

Первый параметр $name обязателен, в то время как $role по умолчанию равен "member", если не предоставлен. Этот шаблон делает ваши функции более гибкими, не требуя от вызывающих всегда предоставлять каждый аргумент.

challenge icon

Задание

Легко

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

  1. Название продукта (например, Laptop)
  2. Количество (например, 5) — этот ввод может быть пустым

Создайте функцию с названием formatOrder, которая принимает два параметра: $product (обязательный) и $quantity (необязательный, по умолчанию 1). Функция должна возвращать строку в следующем формате:

Order: [quantity]x [product]

Если ввод количества пустой, вызовите функцию только с названием продукта (используя количество по умолчанию). В противном случае вызовите её с обоими значениями.

Выведите возвращённый результат.

Пример 1:

Если вводы Laptop и 5, вывод должен быть:

Order: 5x Laptop

Пример 2:

Если вводы Keyboard и пустая строка, вывод должен быть:

Order: 1x Keyboard

Пример 3:

Если вводы Monitor и 3, вывод должен быть:

Order: 3x Monitor

Шпаргалка

Значения параметров по умолчанию позволяют определить резервные значения для параметров функции, когда аргумент не предоставлен.

Чтобы задать значение по умолчанию, присвойте его в объявлении функции, используя =:

<?php
function greet($name = "Guest") {
    echo "Hello, $name!\n";
}

greet("Alice");  // Hello, Alice!
greet();         // Hello, Guest!
?>

При смешивании обязательных и необязательных параметров параметры со значениями по умолчанию должны следовать после обязательных:

<?php
function createUser($name, $role = "member") {
    return "$name is a $role";
}

echo createUser("Alice");           // Alice is a member
echo createUser("Bob", "admin");    // Bob is a admin
?>

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

<?php
// Считываем ввод
$product = trim(fgets(STDIN));
$quantity = trim(fgets(STDIN));

// TODO: Создать функцию formatOrder с $product (обязательным) и $quantity (необязательным, по умолчанию 1)
// Функция должна возвращать строку в формате: "Order: [quantity]x [product]"


// TODO: Вызвать функцию соответствующим образом в зависимости от того, пуст ли quantity
// Если quantity пуст, вызвать только с product (использовать значение по умолчанию)
// Иначе вызвать с product и quantity


// Вывести результат
echo $result;
?>
quiz iconПроверьте себя

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

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