Clean Architecture на PHP

Просмотров: 3322Комментарии: 0
Технологии

Посмотрел видео Robert C. Martin об подходе к построению веб-приложений, обеспечивающем такие преимущества хорошей архитектуры, как

  1. возможность отложить принятие важных архитектурных решений
  2. возможность минимизировать количество принимаемых на каждом этапе архитектурных решений

В печатном виде изложение можно почитать на 8thlight.com. Если кратко, суть подхода в максимальной изоляции бизнес-логики приложения от фреймворка/сервисов/среды выполнения. Сердцевиной приложения являются Сущности (Entities), которые содержат самую общую и высокоуровневую бизнес-логику системы. Уровнем ниже лежат Сценарии (Use Cases), или Взаимодействия (Interactors), связывающие данные Сущностей для реализации бизнес-логики приложения. Ни этот, ни более высокий уровень не должны зависеть от тленных земных вещей типа пользовательского интерфейса, библиотек фреймворка или сервиса базы данных. Интерфейсные адаптеры (Interface Adapters), или Границы (Boundaries), обеспечивают взаимодействие между бизнес-логикой и окружением. Тут работают шлюзы, сервисы БД и внешних API и прочая. Именно с этим слоем взаимодействует фреймворк, если его использовать в разработке. Границы преобразуют потоки данных из внешнего мира в пригодные для обработки высокоуровневым ядром, и наоборот, возвращают от ядра ответ в браузер, UI или куда еще. Основное правило при всем этом - более высокий уровень абстракции не должен зависеть от более низкого уровня.

Изоляция бизнес-логики приложения кроме возможности гибкой работы с окружением позволяет плотно и на самых ранних этапах разработки использовать тестирование. В идеале, можно написать и покрыть тестами систему, ничего еще не зная о фреймворке, базе данных и даже о том, будет ли приложение работать в вебе или на десктопе с планшетом.

В теории все это заманчиво и воодушевляет, но насколько реально сделать такую штуку в коде? Не разобьется ли эта неземная красота, эти почти Платоновы идеи-сущности, о грубость техзадания? Интересно было бы посмотреть варианты реализации чего-нибудь как на Ruby, например, так и на кондовом PHP. Лучшее из того, что я видел по теме, это цикл статей Jeremy Bush aka zombor (между прочим, именно из этого цикла и узнал о сабже). К сожалению, рассказ прервался на самом интересном и до рабочего кода не дошел. На Гитхабе тоже негусто. Не знаю, будет ли время, но интересно было бы написать приложение в подобном стиле.

Что вы думаете о Clean Architecture в реальной разработке? Может быть, даже случалось делать красивую архитектуру?

Оставьте комментарий!


Используйте нормальные имена.

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

MaxSiteAuth. Войти через loginza

(обязательно)