Объекты должны распологаться как в любом другом проэкте

Различия только в том, что в DDD только сождаётся дополнительная логическая прослойка, которая соответствует понятиям и функциям которые используются в реальной жизни.
То есть возьмём к примеру покупку в магазине. Имеется Покупатель, Магазин, Товар, Касса.
В DDD при описание процесса Продажа надо всё это описать, даже если у тебя нет ещё не конкретного товара и не покупателя.
Часто в DDD используется top to down программирование, то есть когда ты программируешь процесс не имея ещё конкретных классов. Таким образом у тебя и создаётся именно эта прослойка.
Как правили создают класс с названием процесса и в конструкторе передают интерфейсы всех участвующих в процессе актёров.
В методе который описывает процесс (как правило с названием run, или process) ты работаешь с интерфейсами и вызывая методы интерфейсов описываешь процесс, который ты хочешь вызывать.
Так же можно процесс назвать не run, или process, а рельным названием этого процесса, к примеру покупка, продажа, и.т.д...
После этого ты начинаешь уже создавать или брать уже имеющиеся объекты и подгонять их под интерфейсы которые ты используешь в твоём процессе при передаче в конструкторе.
И на конец ты при использование процесса должен всего лишь засунуть эти объекты в конструктор и вызвать нужную методу процесса.
Вот и всё.
Какую библиотеку ты потом используешь уже роли не играет и описанная в твоём процессе логика может вызываться вместе в любой библиотеке и даже использоваться как микросервис для вызова на уровне любых языков программирования.
_____________
↓↓↓↓↓↓↓↓↓↓ответ может быть здесьили в mysql_error();