Что такое Doctrine 1?

«Что такое Doctrine 1?» — вопрос из категории Symfony, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Doctrine 1 — это устаревшая ORM (Object-Relational Mapping) библиотека для PHP, предшественница Doctrine 2, которая использовалась в ранних проектах, в том числе с Symfony 1.x. Её ключевые отличия от современной Doctrine:

  • Паттерн Active Record: Сущности наследовались от базового класса Doctrine_Record и сами управляли своим сохранением, что нарушало принцип единой ответственности.
    // Doctrine 1: Active Record подход
    $user = new User();
    $user->username = 'john';
    $user->save(); // Метод save() в самой сущности
  • Менее гибкая архитектура: Отсутствовал полноценный Unit of Work, что усложняло управление транзакциями и производительность в сложных сценариях.
  • Упрощённый DQL: Язык запросов был менее мощным по сравнению с DQL в Doctrine 2.

Doctrine 2, используемая в современном Symfony, полностью переписана на основе паттерна Data Mapper, что обеспечивает лучшее разделение ответственности, производительность и гибкость. Doctrine 1 не поддерживается и не должна использоваться в новых проектах.