Что имеется ввиду под геттерами/сеттерами? Получение свойств объекта?
Методы один-ко-одному со списком свойств класса: либо set$propertName и get$propertyName, либо __set/__get, не суть.
Трубует
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)
Нельзя сделать свойства пабликами как в обычных DTO из-за lazy loading и проксирования связанных объектов.
Ещё раз привожу ссылку:
https://github.com/leopro/trip-planner/blob/master/src/Leopro/TripPlanner/Domain/Entity/Route.php — это anemic или rich? Если anemic, то почему ты так считаешь? Если rich, то почему ты говоришь, что Doctrine не позволяет делать rich? Если я
захочу, я сделаю геттер. Не захочу — никто
не заставляет, иначе говоря, от меня Doctrine
не требует сеттеров и геттеров, она пользуется рефлексией. А что до lazy load, то, по-моему, Doctrine насрать на то сеттер там или что-то другое: просто любое обращение к public-методу будет требовать загрузки.
Кстати, я Doctrine не пользуюсь, мне кажется ты лучше знать должен. Ж)
В AR тоже есть separation of concerns, в виде подключаемых блоков логики. Например, Loggable, Dropboxable и подобные примеси.
Я рад за вас и AR, живите счастливо, но я в гости я к вам никогда не зайду.
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)
К anemic/rich это отношения по сути не имеет. Что до трейтов, они, говоря откровенно, сделаны именно для anemic: setter, getter + свойство. Да, да, ты их будешь переименовывать, менять область видимости, ога
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)
, сэкономишь полминуты, а может даже наоборот, потеряешь. И ради чего, спрашивается? Читабельность хуже + искусственные ограничения (column length для 2-х таблиц разный не сделаешь, будешь думать над тем, «а стоит ли оно того трогать трейт, пусть лучше длина будет одинаковая, пофиг, да насрать вообще, не заметят»).