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

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

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

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

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

Повторное использование кода и PSR-7

Мы редко пишем весь проект полностью с нуля. Вместо этого мы активно используем готовые компоненты от других программистов, подключая через Composer. И если у нас несколько проектов, то может возникнуть желание вынести свой код в отдельную библиотеку, чтобы использовать её у себя или даже поделиться публично.

Но если код сильно связан с остальным кодом проекта или фреймворка, то вынести его в отдельную библиотеку весьма сложно. Сегодня мы как раз рассмотрим повторное использование кода и на примере нашей функции покажем способы избавления от лишних связей через инверсию зависимостей. И в итоге для написания переносимого кода перейдём на PSR-7 и совместимые с ним готовые компоненты.

  • 00:00:29 Повторное использование кода
  • 00:01:55 Вынос функции в папку
  • 00:04:02 Подготовка рабочей области
  • 00:04:57 Анализ зависимостей
  • 00:06:01 Переход на DTO с данными
  • 00:10:08 Контракт через интерфейс
  • 00:12:07 Интерфейсы и тестирование
  • 00:12:43 Тестирование через стабы
  • 00:14:55 Тестирование с проверками через моки
  • 00:18:25 Прямая реализация интерфейса
  • 00:20:14 Написание адаптера
  • 00:24:29 Инверсия зависимостей
  • 00:26:29 Вынесение общих элементов
  • 00:30:37 Вынос интерфейсов
  • 00:35:27 Рекомендация PSR-7
  • 00:39:24 Переход на PSR-7 интерфейсы
  • 00:43:52 Публикация совместимого кода
  • 00:45:16 Переход на реализацию Laminas Diactoros
  • 00:50:33 Смена SapiEmitter
  • 00:53:23 Кастомные Response
  • 00:55:35 Жёсткая зависимость от Response
  • 00:57:43 Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (6)
Андрей

у меня пишет Доступ запрещен Видео недоступно на этом сайте

Сорри все ок

Ответить
Дмитрий Елисеев

Обычно это бывает когда в браузере Firefox включен режим приватности, который не передаёт Referrer.

Ответить
Владимир Перепеченко

Чисто лингвистически не понял про инверсию зависимости:

Вы говорите, что если использовать в project зависимость от library (класс) - это одно направление зависимости (проекта от библиотеки). А если использовать в project интерфейс из library, то это уже инвертированная зависимость.

Как это понимать? Неужели внешняя библиотека стала зависеть от project? Ведь нет: проект продолжает зависеть от библиотеки. Только не от класса из библиотеки, и от интерфейса оттуда же.

Ответить
Дмитрий Елисеев

Мы говорим про разворачивание зависимости от Request:

Раньше библиотека зависела от ServerRequest проекта.
Теперь проект зависит от LangRequest библиотеки.

Ответить
Arunas

спасибо

Ответить
ArtemCat

Спасибо!

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

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

Yandex
MailRu
GitHub
Google