Ответ
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. Всё, точка.