anktx / domain-demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Entity User состоит из Value Objects и имеет поведение, в результате которого изменяются его данные и генерируются события, либо выбрасываются исключения.

User создается из репозитория, например, UserRedisRepository, реализующего интерфейс UserRepositoryInterface, туда же и сохраняется после изменений данных.

События распространяются по шине EventBus и могут быть обработаны заинтересованными слушателями.

User имеет права (enum Action), определяемые битовой маской Access.

Работа "тонких" контроллеров заключается в:

  • поднятии сущности из репозитория ($repo->findById(int $userId)),
  • проверке прав на текущее действие ($user->assertCan(Action $a)),
  • вызове соответствующего поведения ($user->doAction()),
  • сохранении сущности ($repo->persist(User $user)),
  • отправке созданных событий в шину ($bus->publish($user->pullEvents())),
  • возврате "success" или "failure".

About


Languages

Language:PHP 100.0%