Открой безлимитный доступ ко всем скринкастам и получай большие скидки на все наши мероприятия:
Бесплатный
0/ мес.

Ограниченный доступ
только к Free-видео

Активен
Подписчик
500/ мес.

Безлимитный доступ
ко всем скринкастам

Принимаем оплату российскими и иностранными картами, системами МИР Pay, Яндекс Pay и Tinkoff Pay.

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

После написания 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

Спасибо!

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

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

Yandex
MailRu
GitHub
Google