All streams
Search
Write a publication
Pull to refresh
23
0
Александр @xanm

Пользователь

Send message
Не буду говорить что данная реализация репозитория удалась, но она решает поставленные задача. Следующий этап сделать ее ближе к эталону
ну к сожалению ничего идеального нет и бизнес логике приходится переодически сохранять свое состояние в базу
Могу четсно сказать что с этим мы не придумывали ничего сложного и нового у нас простая раздельная работа со связанными сущностями. В мапперах нет хранения связей между таблицами, все связи прописаны в бизнес логике и за ее пределы не выходят.
Любой маппер можно передать в любой репозиторий.
Репозитории реализуют один интерфейс и каждый конкретный может содержать свою специфическую логику.
И опять пустой ответ, если вам есть что-то сказать по существу с примерами, говрите.
А просто тыкать в умные книжки не надо.
Жду аргументированных комментариев с примервами, с обоснованиями, если таковых нет то удачных вам споров в следущем посте на хабре.
Репозиторий менять как раз таки не надо потомучто от него зависит бизне логика, сам репозиторий использует интерфейс мапперов так что подставлять туда можно хоть маппр сохраняющий на диск и бизне логики это без разницы.
Работа с бд сделана на основа FluentPDO, на счет выкладки на github подумаем.
Он нужен для того чтоб убрать зависимость бизнес логики от работы с базой данных.
Ну во первых книги это только теория которая нуждается в шлефовке на практике что и было сделано.
Во вторых нет такого понятия как райт вэй, любая практика берется и адаптируется под конкретные нужды.
От вас к сожалению кроме голой и агрессивной критики я не получил ни одного примера реализации бизнес-логики ни по книге Эванся ни по книгам Фаулера.
Вам я советую почитать книги Карнеги, например «Как завоёвывать друзей и оказывать влияние на людей» и для начала научиться общаться с людьми.
Жду вашей статьи на хабре про «райт вэй»!
Он не знает как делать сохранение, он знает только что ему надо делегировать сохранение в слой мапперов
это там опечатка «отделяем от логики персистентного хранения»
В примере у меня показан самая общая релизация.
Полезная нагрузка мапперов например получать сущности по какимто специфическим условиям.
Пример: из предметной области можно просто сказать репозиторию, дай мне пользователя с id = 4 и статусом = 10 и не заблокированного.
И в данном случае предментая область не нуждается в знаниях как это делается, Репозиторий преобразует этот запрос мапперу.
Сам маппер это уже отдельная сущность которая в отличии от репозитория знает как сохранять в базу, как загружать из нее, знает про sql и прочие инфраструктурные нюансы.
Сущности это часть бизнес-логики, они от нее никак не отделяются.
За плюс спасибо. Информации на этот счет действительно мало, поэтому в свое время я и занялся практическим применением этих подходов. Буду очень рад видеть что программисты начнут использують хотябы TransactionScript как стандарт в своих проектах.
Репозиторий это абстракция в бизнес-логике которая позволяет не зная ничего о инфраструктурном уровне работы с базой данных получать оттуда сущности, сохранять их туда.
Этот подход описан в DDD как альтернатива ActiveRecord который встречается во многих php фреймворках.
Плюс этого подхода в том что мы сущности предметной области отделяем от логики и персистентного хранения в отличии от ActiveRecord, где все свалено в суперкласс который умеет все.
Ваш комментарий лучше всех показывает что статья удалась! А-то я уже сомневаться начал :)
На данный момент я думаю над следующей. Жаль только что на хабре такие статьи не почете.

Information

Rating
Does not participate
Location
Пенза, Пензенская обл., Россия
Date of birth
Registered
Activity