Мені хотілося б почути від тих, хто використовував Вчення 2 (або пізнішого) та Пропель 1.5 (або пізніші). Більшість порівнянь між цими двома об'єктними реляційними картографами базуються на старих версіях - "Доктрина 1 проти Propel 1.3 / 1.4", і обидва ORM пройшли значні зміни в останніх редакціях. Наприклад, більша частина критики Propel, здається, зосереджується навколо класів "ModelName Peer ", які в будь-якому випадку застаріли в 1,5.
Ось що я накопичив до цього часу (і я намагався зробити цей список максимально збалансованим ...):
- Привід
- Плюси
- Надзвичайно сприятливий для IDE, оскільки генерується фактичний код, а не покладається на магічні методи PHP. Це означає, що такі функції IDE, як завершення коду , справді корисні.
- Швидкий (З точки зору використання бази даних - в базі даних не робиться самоаналіз виконання)
- Чиста міграція між версіями схеми (принаймні, у бета-версії 1.6)
- Може генерувати моделі PHP 5.3 (тобто простори імен)
- Легко пов’язувати багато речей в єдиний запит до бази даних з такими речами, як
useXxx
методи. (Дивіться відео "Доповнення коду" вище)
- Мінуси
- Потрібен додатковий крок побудови, а саме побудова класів моделей.
- Генерований код потребує відновлення кожного разу, коли змінюється версія Propel, змінюється налаштування або змінюється схема.
Це може бути неінтуїтивним для деяких, і користувацькі методи, застосовані до моделі, втрачаються. (Я думаю?)- Неправда; спеціальні методи не втрачаються, оскільки створений клас є базовим класом; Propel забезпечує клас сутності, спеціально для розширення. - Деякі корисні функції (наприклад, поведінка версій, міграція схем) знаходяться в бета-стані.
- Плюси
- Вчення
- Плюси
- Більш популярні
- Мова запитів доктрини може виражати потенційно складніші зв’язки між даними, ніж це легко можливо за допомогою стратегії ActiveRecord Propel.
- Простіше додавати поведінку для багаторазового використання в порівнянні з Propel.
- Коментування на основі DocBlock побудови схеми вбудовується у фактичний PHP замість окремого XML-файлу.
- Використовує PHP 5.3 простори імен скрізь
- Мінуси
- Вимагає вивчення абсолютно нової мови програмування (Мова запиту вчення)
- Впроваджені з точки зору "магічних методів" у кількох місцях, роблячи автозаповнення IDE нікчемним.
- Потрібна інтроспекція бази даних і, таким чином, дещо повільніше, ніж Propel, за замовчуванням; кешування може видалити це, але кешування додає значної складності.
- Менше поведінки включено до основної бази коду. Кілька можливостей, які пропонується Propel поза коробкою (наприклад, Вкладений набір), доступні лише через розширення.
- Freakin 'ОГРОМНО :)
- Плюси
Це я зрозумів, хоча лише читаючи документацію, доступну для обох інструментів - я ще нічого не створив.
Хотілося б почути від тих, хто використовував обидва інструменти, поділитися своїм досвідом щодо плюсів / мінусів кожної бібліотеки та про те, що їх рекомендація на даний момент :)