Comments 8
Чистая архитектура - это не когда много папочек. Чистая архитектура это когда понятно что происходит в коде
Полностью согласен! Суть чистой архитектуры не в жесткой структуре папок, а в том, чтобы код:
Чётко отражал бизнес-процессы компании
Был понятен новым разработчикам без длительного погружения
Легко поддавался изменениям при смене требований
Структура папок - это просто инструмент, который помогает организовать код. Как карта местности. Она очень важна для навигации, но без качественного содержимого внутри теряет всякий смысл. Без понимания бизнес-процессов и здравого смысла даже идеальная структура папок превращается в свалку кода.
DDD же не про папочки, а про философию. То что вы нарисовали в DDD больше на луковую (onion) похоже. Не?
у всех архитектур одна цель - сохранить домен от зависимостей. Onion от DDD отличается наличием доменов и контекстов в пространствах имен. В Onion у тебя слои могут начинаться сразу после /src
DDD же не про папочки, а про философию
"Абсолютно верно, DDD — это в первую очередь философия. Однако её гораздо проще соблюдать, когда она отражается и на структуре папок, делая контексты и границы видимыми на уровне кода." Наличия структуры папочек не мешает тебе следовать философии а только помогает как по мне не сбиться с пути.
+ те же deptrac
правила намного проще настроить для зависимостей слоев и пересечения доменов;
Кстати, тут в одном чатике в переписках раскопали. Оказывается и у Эванса, и у Вернона это всё было. А у меня это вообще из головы вылетело, признаться, вообще не помню такого.
Эванс

Вернон

Так что, оказывается, и "про папочки" тоже.
P.S. Ээээ... Хабр поломал тег spoiler о_0 Не работает, не могу заткнуть в него картинки, чтоб не мешались
А как насчёт того, чтобы код проекта организовать в виде модулей. Конкретные модули - проекты, которые в корне имеют composer.json, получается, каждый модуль будет иметь только нужные для него зависимости и не будет опасности импортировать то, что не полагается слою
Многомодульный проект, грубо говоря, которые нормально реализуются в java или в .net, а вот в php, не уверен, что из коробки composer его это умеет, но добиться такого можно
Как организовать структуру приложения