PHP Notes
  • Как дебажить код ReactJS в ConsoleDevTools
  • Processing domain events
  • Паттерн проектирования Adapter
  • Принципы SOLID
  • Основные зависимости в UML
  • Простая схема UML-sequence
  • Value Objects
  • Паттерн проектирования Chain of Responsibilities
  • How to create bash script
  • Create monolog channel Symfony
  • Вопросы из собеседований PHP
  • Заметки по Wordpress
  • Изучая SEO
  • Книги
  • Adobe Character Animator
  • Martin Fowler Refactoring Notes
  • Идеи для редизайна
  • Заметки по Yii2
  • Photoshop заметки
  • WEB Notes
  • Создание канала в телеграм
  • PHP Notes
  • Ads notes
  • Таргетолог smm обучение
  • Парсинг андроид приложения
  • Phrasal verb look
  • Phrasal verb "Go"
  • Clean Code
  • Conda tutorial
  • Scrapy notes
  • Как подключиться к хосту локальному (к бд, например) из докер контейнера
  • Untitled
  • Маркетинг в Инсте Конспект
  • Таргетинг
  • По сайту
  • Programming learning
  • VBA notes
  • PHP project deployment
  • На сервер без пароля
  • PHPStorm + CodeSniffer configuring
  • Laravel learning
  • Sudo disable with docker
  • Facebook Marketing API
  • Docker notes
  • Фриланс
  • Настройка Sublime Text 3
  • Изучаем БЭМ
  • Алгоритм верстки сайта
  • Настройка VS Code
  • Gulp настройка установка плагины. Пошаговая инструкция по настройке сборки Gulp 4 для верстки сайтов
  • Процесс накатывания стилей CSS
  • Generate entities from db Doctrine
  • Premiere Pro Notes
  • Идеи для Ads
  • Migrate and Setup Hosted Live WordPress Site to Localhost
  • Ресурсы PHP
  • Делаем тему Wordpress
Powered by GitBook
On this page

Was this helpful?

Processing domain events

Как использовать грамотно domain events без вытекания бизнес логики в контроллер

PreviousКак дебажить код ReactJS в ConsoleDevToolsNextПаттерн проектирования Adapter

Last updated 5 years ago

Was this helpful?

Из книги Unit Testing: Principles, Practices, and Patterns Хориков, 177 страница

Проблема: Бывает, что при вызове метода, который меняет состояние в итоге ничего не должен менять. Database - это implementation details, Domain Events - это observable behavior.

Если вызов метода произошел, то он должен быть отображен для внешних систем. Поскольку database у нас только для внутреннего использования, то тут неважно, будет ли еще один запрос на изменение данных БД.

Наша цель отправлять event только в том случае, если сообщение реально изменилось.

Решение: создать в сущности список созданных событий, чтобы в контроллере не делать if, мол похож ли имейл, просто циклом пробегать, таким образом избегая логики в контроллере.

До:

После: