Что такое Doctrine 1?

Ответ

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 не поддерживается и не должна использоваться в новых проектах.

Ответ 18+ 🔞

А, блядь, Doctrine 1! Ну это же просто ёперный театр, ядрёна вошь! Прямо как будто на дворе 2002-й год, честное слово.

Смотри, вот представь себе: была такая библиотека, предок нынешней Doctrine. И подход у неё был, с позволения сказать, пиздопроебибна. Называется Active Record. Это когда твоя сущность — она же и база данных, и логика, и всё на свете. Наследуешься от какого-то Doctrine_Record, и у тебя прямо в объекте торчит метод save(). Типа, «я сам, мама!».

// Doctrine 1: Active Record подход
$user = new User();
$user->username = 'john';
$user->save(); // Метод save() в самой сущности

Выглядит вроде просто, да? Но это, чувак, чистой воды нарушение принципов. Это как если бы твой холодильник сам ездил в магазин за продуктами. Одна сущность — и на все случаи жизни. Архитектура там была так себе, доверия ебать ноль. Никакого нормального Unit of Work, с транзакциями головняк, производительность на сложных операциях могла накрыться медным тазом. И их DQL — это был такой урезанный, куцый язык запросов, по сравнению с тем, что есть сейчас.

А потом пришла Doctrine 2, которую все и знают. Её с нуля переписали на паттерне Data Mapper. Это когда сущности — они просто данные, тупые и безмозглые, а за их сохранение, загрузку и прочую магию отвечает отдельный механизм. Чисто, гибко, производительно. Как небо и земля.

Короче, Doctrine 1 — это музейный экспонат. Её не поддерживают уже овердохуища лет. Если вдруг где-то в легаси-проекте на Symfony 1.x наткнёшься — просто знай, что это история. Для новых проектов — даже не думай, только Doctrine 2. Всё, точка.