Параметры по умолчанию и вариативные параметры
Используйте значения по умолчанию и вариативные аргументы в функциях PHP.
«Параметры по умолчанию и вариативные параметры» — бесплатный урок PHP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Значения параметров по умолчанию
Значения по умолчанию позволяют вызывающему коду не указывать аргументы. Значение по умолчанию используется, если аргумент не передан:
<?php
function createUser(string $name, string $role = 'viewer'): string {
return "$name ($role)";
}
echo createUser('Alice'); // Alice (viewer)
echo createUser('Bob', 'admin'); // Bob (admin)Правила для значений по умолчанию
Важные правила для параметров со значениями по умолчанию:
- Параметры со значениями по умолчанию должны идти после обязательных параметров
- Значения по умолчанию должны быть константными выражениями — не вызовами функций или переменными
- Именованные аргументы PHP 8 смягчают требование к порядку параметров
Параметры, допускающие NULL
Используйте ?type, чтобы разрешить NULL в качестве допустимого аргумента и задать NULL по умолчанию:
<?php
function findUser(?int $id = null): string {
if ($id === null) {
return 'Searching all users';
}
return "User #$id";
}
echo findUser(); // Searching all users
echo findUser(42); // User #42Функции с переменным числом аргументов и ...
Используйте ... перед параметром, чтобы принимать переменное число аргументов в виде массива:
<?php
function sum(int ...$numbers): int {
return array_sum($numbers);
}
echo sum(1, 2, 3); // 6
echo sum(10, 20, 30, 40); // 100Переменное число аргументов с обязательными параметрами
Вы можете сочетать обязательные параметры с параметром, принимающим переменное число аргументов, в конце списка:
<?php
function logMessage(string $level, string ...$messages): void {
foreach ($messages as $msg) {
echo "[$level] $msg" . PHP_EOL;
}
}
logMessage('INFO', 'App started', 'Config loaded');Оператор распаковки при вызове
Используйте ... при вызове функции, чтобы передать элементы массива как отдельные аргументы:
<?php
function add3(int $a, int $b, int $c): int {
return $a + $b + $c;
}
$args = [1, 2, 3];
echo add3(...$args); // 6
$extra = [4, 5];
echo add3(1, ...$extra); // 10Именованные аргументы (PHP 8)
Именованные аргументы позволяют передавать значения по имени параметра, не учитывая порядок:
<?php
function createTag(string $tag, string $content, string $class = ''): string {
$cls = $class ? " class=\"$class\"" : '';
return "<$tag$cls>$content</$tag>";
}
// Skip $class, pass $content by name
echo createTag(content: 'Hello', tag: 'p');
// <p>Hello</p>Именованные аргументы со встроенными функциями
Именованные аргументы также работают со встроенными функциями PHP:
<?php
$arr = [3, 1, 4, 1, 5];
// Traditional positional
$result1 = array_slice($arr, 1, 3);
// Named arguments
$result2 = array_slice(array: $arr, offset: 1, length: 3);
print_r($result1); // [1, 4, 1]Устаревший func_get_args()
До появления синтаксиса переменного числа аргументов в PHP 5.6 для доступа ко всем аргументам использовалась func_get_args(). Вы можете встретить её в устаревшем коде:
<?php
function legacySum(): int {
$args = func_get_args();
return array_sum($args);
}
echo legacySum(1, 2, 3, 4); // 10
// Modern: use int ...$numbers insteadПеременное число аргументов с проверкой типа
Сочетайте указание типов с параметрами, принимающими переменное число аргументов, чтобы строго контролировать входные данные:
<?php
declare(strict_types=1);
function joinStrings(string $sep, string ...$parts): string {
return implode($sep, $parts);
}
echo joinStrings('-', 'a', 'b', 'c'); // a-b-c
// joinStrings('-', 'a', 42); // TypeError in strict modeСочетание значений по умолчанию и именованных аргументов
Именованные аргументы и значения по умолчанию вместе обеспечивают максимальную гибкость:
<?php
function sendEmail(
string $to,
string $subject,
string $body = '',
bool $html = false
): bool {
// simulate send
return true;
}
// Skip $body, pass $html by name
sendEmail('a@b.com', 'Hi', html: true);Быстрая проверка
Что делает оператор ... в определении функции PHP?
Итоги: параметры по умолчанию и с переменным числом аргументов
Краткое содержание:
- Значения по умолчанию позволяют использовать необязательные параметры
- Параметры со значениями по умолчанию указываются после обязательных
?typeразрешает NULL и необязательное значение по умолчанию...$argsсобирает аргументы с переменным числом значений в массив- Оператор распаковки
...$arrраскрывает массив в месте вызова - Именованные аргументы (PHP 8) передаются по имени, а не по позиции
Часто задаваемые вопросы
Урок «Параметры по умолчанию и вариативные параметры» бесплатный?
Да — полный текст урока «Параметры по умолчанию и вариативные параметры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Параметры по умолчанию и вариативные параметры»?
Используйте значения по умолчанию и вариативные аргументы в функциях PHP. Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Параметры по умолчанию и вариативные параметры»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение и вызов функций
- Параметры по умолчанию и вариативные параметры
- Область видимости переменных: локальная и глобальная
- Анонимные функции и замыкания