Перейти к основному содержимому

Одна ветка на каждый маршрут

Маршрутизация решает, какой код отвечает на какой запрос. В PHP нет встроенной таблицы маршрутов — скрипт-маршрутизатор сам читает запрос: $_SERVER["REQUEST_URI"] содержит путь, а разбиение его по / даёт сегменты.

Сегмент, который является данными — 7 в /users/7, — это параметр пути: вместо буквального сопоставления маршрутизатор захватывает его и передаёт обработчику. Фреймворки добавляют сверху удобства, но механизм под ними именно такой.


Маршруты и значения из пути

Два маршрута: список по адресу /users и один пользователь по /users/{id}. Второй сегмент пути — это параметр пути, та часть URL, которая является данными.

Маршрут с параметром пути

Один и тот же скрипт-маршрутизатор направляет /users в одну ветку, а /users/7 — в другую, и второй сегмент пути передаёт 7 как данные.

Prompt
Напишите PHP-скрипт, в котором скрипт-маршрутизатор разбивает путь запроса на сегменты и обрабатывает два маршрута: GET /users возвращает строку со списком, а GET /users/{id} отвечает об одном пользователе, взяв id из второго сегмента. Запустите его на встроенном сервере, выполните запросы к обоим маршрутам и выведите ответы.
Вывод: PHP-скрипт

Параметры запроса

Часть после ? содержит параметры запроса — настройки для запроса, например текст поиска или ограничение: /search?q=php&limit=2. PHP разбирает их за вас в массив $_GET, всегда как строки, а ?? подставляет значение по умолчанию для отсутствующих.

Правило простое: путь говорит, какой ресурс, а строка запроса — как: фильтры, сортировка, разбиение на страницы.

Чтение строки запроса

Обработчик читает q и limit из $_GET. Во втором запросе limit отсутствует, поэтому обработчик берёт значение по умолчанию — отсутствующие параметры это нормально, рассчитывайте на них.

Prompt
Напишите PHP-скрипт с обработчиком /search, который читает параметры запроса q и limit из $_GET, используя ?? для подстановки значения limit по умолчанию, когда он отсутствует. Запустите его на встроенном сервере, обратитесь к нему один раз с двумя параметрами и один раз только с q, выводя ответы.
Вывод: PHP-скрипт