DataMapper ORM и Doctrine следуют совершенно другому набору соглашений. DataMapper ORM - это (как ни странно) не средство отображения данных, а активная реализация записи. Это означает, что ваши классы моделей тесно интегрированы с библиотекой ORM. Ваши модели основаны на встроенных моделях DataMapper. Вы получаете много волшебства бесплатно, но в обмен вы женитесь на своих моделях в DataMapper ORM.
В доктрине, с другой стороны, используется истинный шаблон отображения данных. Это модели простых старых объектов PHP. У них нет внешних зависимостей. Doctrine может взять любой старый объект PHP, сохранить его в базе данных и затем снова извлечь его. Его модели вообще не связаны с ORM.
То, о чем вы читаете в документации Doctrine о методах получения, установщика, реляционной целостности и т. Д., Это всего лишь хорошая практика разработки ОО . Они не являются обязательными для Доктрины, но они облегчают вашу жизнь. Вы должны использовать их и для своих моделей DataMapper ORM! Если вы хотите, вы можете использовать магические методы получения и установки или даже просто старые общедоступные свойства в своих моделях Doctrine. То, что Учение говорит, что вы не должны делать, не означает, что вы не можете сделать это. Doctrine с радостью использует ваши модели с общедоступными свойствами, но есть некоторые предостережения. Вот и все.