Я думаю, что это имеет смысл, но это разделит ваши модули на на каком уровне они находятся , а не на том, что они делают . Например, в этой структуре, если вы хотите модули аутентификации и печати, вы, вероятно, получите что-то вроде этого:
/common
/helpers
/Authentication
/AuthenticationService.php
/Printing
/PrintingService.php
/domain
/entities
/Authentication
/Identity.php
/Printing
/Printer.php
/datamappers
/Authentication
/IdentityDataMap.php
/Printing
/PrinterDataMap.php
Работая в такой системе, я могу сказать, с одной стороны, очень трудно удержать границы между модулями от взаимного зацепления только потому, что люди работают в слоях и думают о слоях как о «всех». все вместе'. С организационной точки зрения мне не очень нравится иметь три корневых каталога, открытых для работы с конкретным модулем. Мы организовываем проекты в каталоги, чтобы нам было легче с ними работать, а не с компилятором.
Если бы я делал это снова, я бы разделил некоторые вещи по слоям, скажем, код пользовательского интерфейса, на одном уровне и бизнес-код на другом, но затем по модулю под этим. Полагаю, больше гибрида, но, возможно, лучше для него.
/domain
/Printing
/entities
/datamappers
/repositories
/Auth
/entities
/datamappers
/repositories
/ui
/controllers
/view