Контест Junior PHP 8.x: enum, readonly, match обновлено

Маршрутизация через match

Условие

Реализуйте маршрутизатор. Путь делится на сегменты по /, пустые сегменты игнорируются. Маршруты:

  • GET / → home;
  • GET /users → users.index, POST /users → users.store;
  • GET|PUT|DELETE /users/{id} → users.show|users.update|users.destroy id=ID, где id это положительное число без ведущих нулей;
  • GET /posts/{slug} → posts.show slug=SLUG.

Если путь подходит под какой-то маршрут, но метод нет, выведите 405. Иначе 404.

Ввод: n (n ≤ 10⁴), затем строки METHOD path.

Пример

6
GET /
GET /users/42
DELETE /users/7
POST /users/7
GET /posts/hello-world
GET /admin
home
users.show id=42
users.destroy id=7
405
posts.show slug=hello-world
404

Решите в тренажёре

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

Термины по теме