Zend_Db_Table vs PHPDoctrine

Выдалось немного времени на эксперименты с Zend_Db_Table (ZDT) и по результатам хочу отписаться сюда :)

Итак. Не так давно в голову закралась мысль “зачем мне ORM, если у ZendFramework есть Zend_Db_Table?”. Вобщем-то довольно справедливое сомнение, если учесть, что ZDT содержит всю ту же функциональность, характерную для ORM: тут и биндинг полей к свойствам, тут и связи (даже n:m!), тут и магические аксессоры (magic accessors), тут и.. вобщем много тут всего :) Но…

…Еще как-то более года назад, когда работал на varien.com, “посчастливилось” впервые познакомиться с ZDB. И почему-то тогда он мне сразу не понравился. Как-то все было неудобно, неинтуитивно и неприятно :-! Но ведь прошло столько времени, и даже версия ZF успела трижды смениться… И вот я снова о нем вспомнил.

В качестве теста решил написать небольшое приложение, состоящее из 6 связанных между собой различными способами таблицами.
2 часа на освоение ZDT по документации и написание необходимых моделей. Закончив и полюбовавшись на содеянное решил… удалить все. Точнее нет - не так. Не удалить. Но все по-порядку.

Наученный горьким опытом, что бизнес модели нельзя описывать открытым ORM, модели на ZDT сразу же реализовывал через закрытые свойства и соответствующие им геттеры и сеттеры ( getters and setters ). Но проблема оказалась не в этом. Гнавшись за производительность (да - ZDT позволяет конструировать более гибкие запросы), я упустил из внимания то, что ZDT не представляет гибких способов реализации часто используемых паттернов таких как NestedSets. Кроме этого ZDT не позволяет гибко обрабатывать результаты JOIN запросов - коллекции раздельно не формируются :(

Очень жалко было расставаться с очень удобным профайлером, но… Вооружившись Doctrine и готовыми бизнес-объектами, через 20 минут у меня была готова полнофункциональная модель, но уже на основе ORM :)

Вывод: Doctrine гараздо удобнее чем ZDT по соотношению скорость-качество ну и субъективно тоже конечно :)

Tags: , , , , , , ,

Также рекомендую к прочтению:

3 Responses to “Zend_Db_Table vs PHPDoctrine”

  1. LokiDi L0ck Says:

    Сколько же вас таких… любящих сравнивать мягкое с тёплым.
    Аж тошно, право слово.

  2. Алексей Токарь Says:

    Вы очень объективно высказали мнение ;)

  3. WEB DEV Says:

    ORM Doctrine Реальная вещь, я постоянно ищу что-то новое и все равно возвращаюсь к ней.
    А всем кто ее не юзает могу только пособолезновать…

Leave a Reply

Введите следующие символы: