После написания ServerRequest и Response пора рассмотреть случаи, когда нам понадобится модификация запросов и ответов для служебных целей. Сегодня этим и займёмся.
Поговорим про работу PHP с примитивами и объектами. Рассмотрим возможные проблемы и риски использования изменяемых объектов с сеттерами для запроса и ответа. Расскажем про иммутабельность и напишем надёжный код, избавленный от этих рисков.
Заодно упростим код формирования ответа и добавим поддержку множественных HTTP-заголовков.
- 00:00:14 - Постановка задачи
- 00:01:08 - Повтор служебного кода
- 00:02:06 - Постпроцессинг ответа
- 00:04:17 - Fluent Interface для сеттеров
- 00:06:35 - Неожиданные эффекты сеттера
- 00:08:21 - Работа PHP с примитивами
- 00:11:55 - Копирование значения при присваивании
- 00:12:35 - Оптимизация Copy on Write
- 00:14:47 - Объекты и указатели
- 00:16:56 - Значения и указатели
- 00:18:31 - Доступ к единому объекту
- 00:20:40 - Создание нового значения
- 00:21:36 - Явное клонирование
- 00:22:03 - Более сложная логика
- 00:23:14 - Уязвимость после проверки
- 00:24:27 - Необходимость клонирования
- 00:25:01 - Уязвимость прямой модификации
- 00:26:07 - Проблемы от мутабельности
- 00:27:12 - Пересоздание вместо модификации
- 00:29:18 - Удобная фабрика
- 00:31:27 - Альтернативный вариант
- 00:32:25 - Доступ к полям внутри класса
- 00:35:26 - Компромиссное нарушение инкапсуляции
- 00:36:50 - Неизменяемость или иммутабельность
- 00:37:21 - Работа с DataTime
- 00:39:08 - Компромисс производительности
- 00:41:33 - Иммутабельный Response
- 00:43:27 - Необязательные параметры конструктора
- 00:45:16 - Упрощение записи тела ответа
- 00:47:41 - Множественные HTTP-заголовки
- 00:50:34 - Повторы заголовков в header
- 00:51:34 - Множественные заголовки запроса
- 00:56:53 - Препроцессинг запроса
- 01:00:28 - Обзор результата
- 01:02:41 - Что дальше
В следующем эпизоде рассмотрим вопрос повторного использования нашего кода и интерфейсы.
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо!
Или войти через: