моя практика показывает, что у DataMapper есть 2 мнимых преимущества
1.
защита от утечки памяти если приложение работает с консоли как служба. Мнимое, потому что у меня было 2 проекта на Symfony и утечки памяти были в самом Doctrine (gc_collect_cycles() работает только если утечка была устранена), как пример SQL Logger, можешь сам поискать
orm memory leaks
dbal memory leaks
2.
отсутствие зависимости от фреймворка - это вообще чистая религия, т.к. проект который подсел на Doctrine ORM никогда в жизни с него не слезет.
после выхода 7.4 (
https://www.php.net/manual/en/class.weakreference.php) преимуществ нет никаких, только одни костыли - делаем гибкий язык НЕгибким, добавляем еще strict_type=1 и исправляем то, что не требовало исправлений до этого (ограничения при наследовании, типизация, явное проксирование всего и вся, усложнение использования транзакций и т.д.), то есть идем по пути "если бы у рыбы была шерсть, то были бы блохи, а блохи - это...", то есть, делаем с языка С++, а данные в С++ мы получаем через DataMapper.. примерно так и работает.
п.с.
и да, я из секты свидетелей ActiveRecord, т.к. считаю это верной веткой в эволюции преобразования данных с базы в обьекты кода. А когда у меня база noSQL, то это вообще для меня очевидно.
п.п.с.
норм текст
https://github.com/codedokode/pasta/blo ... rns-oop.md