Просто наткнулся на проект Doctrine Project, который имеет объект Relational Mapper и слой абстракции DB. Что делает Doctrine для других слоев абстракции PHP? И какое практическое использование вы можете поместить ORM, помимо выборки объектов через запросы, написанные на языке запросов Doctrine? Является ли языком запросов действительно то, что вы хотите разработать для всего веб-приложения? Он хорошо работает?
В целом ли создание приложения на Доктрине облегчает поддержку и понимание? Является ли она чрезмерной инженерией и строится на уровне абстракции, разумном для проектов малого среднего размера? (<50 графических экранов), а не напрямую работать с MySQL.
Что делает Doctrine для других слоев абстракции PHP?
Является ли языком запросов действительно то, что вы хотите разработать для всего веб-приложения?
Только часть приложения, ответственного за поддержание бизнес-объектов, должна знать о существовании Doctrine. И эта часть не должна быть на 100% основанной на доктрине.
В целом ли создание приложения на Доктрине облегчает поддержку и понимание?
Определенно. Код легче читать, понимать и поддерживать.
Является ли он чрезмерно спроектированным, и разве это разумно для проектов малого среднего размера?
Фактически Доктрина довольно проста в своих основах. И это очень хороший выбор для небольших, средних и даже некоторых крупных приложений.
Доктрина – это не ответ на все, и иногда это немного проблематично. Однако для типичных задач это чрезвычайно полезно. IMHO лучший ORM / ODM для PHP в данный момент.
Я хотел бы добавить несколько моментов к ответу Крозина, но, к сожалению, не могу его прокомментировать. Вот они:
ИМХО на данный момент доктрина обеспечивает лучшую поддержку завершения кода IDE и абстракцию уровня БД среди всех доступных ОРП. Он не перепроектирован и не следует принципам SOLID.