Intereting Posts
WAMP Stack PHP «Неустранимая ошибка: класс« SoapClient »не найден» Запуск PHP-кода в фоновом режиме с параметрами Как создать пустой массив в PHP с предопределенным размером? не может нажимать элементы, отобранные другой страницей, используя ajax – $ (document) .on не работает есть способ передать значение на другую страницу? MVC: Должен ли я вводить правила проверки формы в контроллер или модель? PHP получает разницу во времени в минутах Замените realpath PHP () Переменные статической функции и конкатенация в PHP Расширьте класс исключений Codeigniter для добавления настраиваемого метода Ошибка печати изображения из общей папки laravel Как встроить php-скрипт в javascript? После array_filter (), как я могу сбросить ключи, чтобы перейти в числовом порядке, начиная с 0 как реализовать facebook как уведомление? Zend_Mail_Header_HeaderValue :: isValid недействителен со специальными символами

Преимущества использования Doctrine for PHP?

Просто наткнулся на проект Doctrine Project, который имеет объект Relational Mapper и слой абстракции DB. Что делает Doctrine для других слоев абстракции PHP? И какое практическое использование вы можете поместить ORM, помимо выборки объектов через запросы, написанные на языке запросов Doctrine? Является ли языком запросов действительно то, что вы хотите разработать для всего веб-приложения? Он хорошо работает?

В целом ли создание приложения на Доктрине облегчает поддержку и понимание? Является ли она чрезмерной инженерией и строится на уровне абстракции, разумном для проектов малого среднего размера? (<50 графических экранов), а не напрямую работать с MySQL.

Solutions Collecting From Web of "Преимущества использования Doctrine for PHP?"

Что делает Doctrine для других слоев абстракции PHP?

  1. Использует шаблон DataMapper, а не ActiveRecord.
  2. Поддержка аннотаций , XML и YAML для схемы.
  3. Использует DQL .
  4. Использует преимущества PHP 5.3+.
  5. Быстро и имеет большое сообщество.
  6. Кроме ORM существует ODM.

Является ли языком запросов действительно то, что вы хотите разработать для всего веб-приложения?

Только часть приложения, ответственного за поддержание бизнес-объектов, должна знать о существовании Doctrine. И эта часть не должна быть на 100% основанной на доктрине.

В целом ли создание приложения на Доктрине облегчает поддержку и понимание?

Определенно. Код легче читать, понимать и поддерживать.

Является ли он чрезмерно спроектированным, и разве это разумно для проектов малого среднего размера?

Фактически Доктрина довольно проста в своих основах. И это очень хороший выбор для небольших, средних и даже некоторых крупных приложений.


Доктрина – это не ответ на все, и иногда это немного проблематично. Однако для типичных задач это чрезвычайно полезно. IMHO лучший ORM / ODM для PHP в данный момент.

Я хотел бы добавить несколько моментов к ответу Крозина, но, к сожалению, не могу его прокомментировать. Вот они:

  • Doctrine не использует магические методы __get () и __set () для доступа к атрибутам сущности, все атрибуты сущности должны иметь getter / setter. Это улучшает завершение кода IDE, и вам не нужно постоянно просматривать структуру таблицы DB.
  • Доктрина полностью абстрагирует вас от реальных имен полей таблицы. Когда вы сопоставили свойства объектов с полями БД – вы используете имена свойств везде. То же самое для имен таблиц.
  • В Doctrine используется шаблон репозитория, который скрывает детали получения объектов.
  • Doctrine использует «первый код», поэтому вы можете сначала создавать объекты, а затем автоматически создавать базу данных для них. Также возможен обратный случай.
  • Doctrine имеет мощный построитель запросов, поэтому вы можете использовать шаблон построителя для запросов с условными частями.
  • Doctrine использует внешние ключи и ограничения для выполнения каскадных действий и сохранения данных.
  • Узел UnitOfWork от Doctrine – очень красивая и умная вещь, которая не имеет аналогов в других php ORM

ИМХО на данный момент доктрина обеспечивает лучшую поддержку завершения кода IDE и абстракцию уровня БД среди всех доступных ОРП. Он не перепроектирован и не следует принципам SOLID.