Провели большой практический стрим про разделение на модули и микросервисы
Задонатить и смотреть →
Открой безлимитный доступ к 100+ полезных скринкастов и получай скидки на все предстоящие мероприятия

Постпроцессинг и иммутабельность

После написания 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 - Что дальше

В следующем эпизоде рассмотрим вопрос повторного использования нашего кода и интерфейсы.

Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (1)
fedot

Спасибо!

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Google
GitHub
Yandex
MailRu