0Pricing
PHP Academy · Урок

Параметры по умолчанию и вариативные параметры

Используйте значения по умолчанию и вариативные аргументы в функциях 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 — локальная установка не требуется.

Все уроки этого курса

  1. Определение и вызов функций
  2. Параметры по умолчанию и вариативные параметры
  3. Область видимости переменных: локальная и глобальная
  4. Анонимные функции и замыкания
← Назад к PHP Academy