adelf / acwa_book_ru

Книга "Архитектура сложных веб-приложений. С примерами на Laravel"

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Структура проекта

Cepairda opened this issue · comments

commented

Книга замечательная. Спасибо огромное !
После прочтения у меня остался вопрос. Как правильно создать структуру. В какую директорию сохранять Domain слой. Куда сохранить DTO(В одну директорию все или на поддиректории), и прочее. Очень хотелось бы увидеть пособие/пример. Если бы к книге был хоть манюсенький пример проекта(ссылка на github или даже платный вариант. Было бы здорово.). Пример в таком ввиде:
-DomainLayer
-DTO
--User
--Setting

commented

Нет правильной структуры. В начале проекта, всё как в фреймворке - контроллеры там то, ДТОшки там то. ПОтом если проект растёт, то становится более удобно поделить по фиче-модулям. И каждый модуль всё своё держит в себе(и контроллеры и модельки и всё). Иногда отделяют домен прям совсем-совсем. Во всяких си-шарп проектах это удобно очень в отдельный проект-сборку(*.dll). А иногда вообще по микросервисам делят. Это не так уж и важно что где лежит. Главное, чтобы был хоть какой-то порядок в этом. Регламентированный.

commented

@adelf Ну как я понимаю в DDD подходе есть сложившиеся рекомендации. Инфраструктура, Сервисы, Домен и т.к.

commented

Да. Как и в книге этой, это назвал слоями. Т.е. фактически они отделены друг от друга. но это разделение логическое. Некоторые держат каждый слой в своей папке. А некоторые берут и всё-всё, что касается например юзеров, все репозитории, сервисы, модели и т.д. в одну папку кладут и им так лучше. Поэтому главное тут понять для себя как удобнее на данном конкретном проекте.
НУ и вообще я где-то видел довольно популярный слайд, что DDD это не про "репозитории и папочки". это про Ubiquitous language and Bounded Contexts

commented

@adelf Спасибо !Насколько это хороший пример для DDD https://github.com/shin1x1/laravel-ddd-sample ?
Мне понравилось что там отдельная сущность Item и при выборке с БД всё записывается в этот обьект. А не понравилось что нет обратной операции. То есть запись идёт напрямую в eloquent в ввиду строк, а вот выборка уже возвращает обьект