0Pricing
PHP Academy · Урок

Выражение match и именованные аргументы

Заменяйте громоздкую конструкцию switch на match и используйте именованные аргументы для ясности

«Выражение match и именованные аргументы» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Выражение match

В PHP 8.0 появилось выражение match — лаконичная альтернатива switch, использующая строгое равенство (===) и возвращающая значение.

match и switch

Основные различия: match использует строгое сравнение, не допускает неявного перехода к следующей ветви и является выражением (возвращает значение).

<?php
$status = 2;
$label = match($status) {
    1 => "active",
    2 => "inactive",
    3 => "banned",
    default => "unknown",
};
echo $label; // "inactive"

Несколько условий в одной ветви

Разделяйте несколько значений match запятыми, чтобы обрабатывать их с одинаковым результатом.

<?php
$code = 404;
$type = match($code) {
    200, 201, 202 => "success",
    400, 422      => "client error",
    404           => "not found",
    500, 503      => "server error",
    default       => "other",
};
echo $type; // "not found"

match вызывает исключение, если совпадений нет

Если ни одна ветвь не совпала и отсутствует default, PHP вызывает UnhandledMatchError — в отличие от switch, который молча продолжает выполнение.

match как выражение

Поскольку match возвращает значение, его можно использовать непосредственно — в качестве аргумента функции, в операторе возврата или внутри интерполяции строки.

<?php
echo "Status: ".match($active) {
    true  => "ON",
    false => "OFF",
};

Именованные аргументы

Именованные аргументы PHP 8.0 позволяют передавать аргументы функции по имени параметра в любом порядке.

<?php
function makeTag(string $tag, string $content, string $class = ""): string {
    return "<$tag class=\"$class\">$content</$tag>";
}
echo makeTag(content: "Hello", tag: "p", class: "lead");

Преимущества именованных аргументов

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

Именованные аргументы со встроенными функциями

Именованные аргументы также работают со встроенными функциями PHP.

<?php
$arr = [3, 1, 4, 1, 5];
$result = array_slice(array: $arr, offset: 1, length: 3, preserve_keys: true);

Сочетание именованных и позиционных аргументов

Можно сочетать позиционные и именованные аргументы, но именованные аргументы должны идти после позиционных.

<?php
str_contains(haystack: "Hello World", needle: "World");
// or positional then named:
str_contains("Hello World", needle: "World");

Именованные аргументы в array_map

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

match в реальном коде

Заменяйте длинные цепочки if/elseif выражением match для маршрутизации по методам HTTP, сопоставления кодов состояния и решений, подобных перечислениям.

<?php
$handler = match($_SERVER["REQUEST_METHOD"]) {
    "GET"    => new GetHandler(),
    "POST"   => new PostHandler(),
    "DELETE" => new DeleteHandler(),
    default  => throw new InvalidArgumentException("Unsupported method"),
};

Итоги

match обеспечивает строгое, исчерпывающее ветвление без неявного перехода к следующей ветви. Именованные аргументы повышают читаемость места вызова. Оба средства стали важными улучшениями PHP 8.0.

Быстрая проверка

Что происходит, если ни одна ветвь match не совпала и отсутствует default?

Часто задаваемые вопросы

Урок «Выражение match и именованные аргументы» бесплатный?

Да — полный текст урока «Выражение match и именованные аргументы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Выражение match и именованные аргументы»?

Заменяйте громоздкую конструкцию switch на match и используйте именованные аргументы для ясности Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Выражение match и именованные аргументы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Выражение match и именованные аргументы
  2. Оператор nullsafe и объединённые типы
  3. Перечисления (перечислимые типы)
  4. Fibers: кооперативная многозадачность
← Назад к PHP Academy