Веб-разработка на PHP
Теория: HTTP-сессия (запрос и ответ)
Каждая HTTP-сессия определяется двумя вещами: запросом и ответом. Запрос формируется клиентом, например, браузером, а ответ — сервером.
В PHP для работы с http-сессией встроено множество глобальных массивов, но их использование во фреймворках не допускается. Это технически можно, но это «злое» программирование.
И запрос и ответ в Slim представлены двумя объектами, которые передаются в каждый обработчик маршрута.
$request используется для извлечения данных запроса, например, заголовков или содержимого отправленной формы. У запроса нет сеттеров. Его уже выполнили и он не может поменяться.
В противоположность этому $response используется для формирования ответа и в процессе работы наполняется данными: заголовками и телом.
Тело ответа хранится внутри $response как объект, который можно получить через метод getBody(). А метод write() записывает данные в этот объект. Такая структура объектов выбрана не просто так. HTTP позволяет отдавать данные потоком (чанками), для которых нужны свои методы работы.
Несмотря на то, что объект с телом ответа может меняться, сам $response никогда не изменяется. Любой его метод формирует новый $response:
Если не знать этого, можно легко допустить такую ошибку:
В этом коде withStatus() возвращает новый $response, который не используется, а наружу возвращается старый. Если попробовать выполнить запрос к этому обработчику, то он вернет изначально переданный в функцию $response.
Параметры запроса
Параметры запроса не являются частью маршрута и не влияют на выбор обработчика. Связано это с тем, что такие параметры используются для различных вспомогательных целей, например, параметр page обозначает страницу просматриваемого списка. Обработчик в такой ситуации всегда один и тот же, а вот данные показываются разные.
Параметры извлекаются из объекта $request несколькими способами:
getQueryParams()— извлекает все параметрыgetQueryParam($name, $defaultValue)— извлекает значение конкретного параметра. Вторым параметром принимает значение по умолчанию
Количество обработчиков и маршрутов, которые можно добавить, не ограничено. При этом микрофреймворки не задают никакой структуры. Если кода становится много, то разделять его по файлам придется самостоятельно.
Рекомендуемые программы
Завершено
0 / 28
.png)
