Зачем использовать Doctrine вместо стандартной ORM CakePHP? - программирование
Подтвердить что ты не робот

Зачем использовать Doctrine вместо стандартной ORM CakePHP?

Я собираюсь начать работу над новым веб-проектом с использованием CakePHP 2.2, в основном работая с Zend Framework 1 ранее.

При первом взгляде мне очень нравится, как CakePHP обрабатывает модели и базовые таблицы базы данных, особенно в отношении быстрого установления отношений "один-ко-многим" и "многие-ко-многим" с минимумом суеты. Кажется, откровенно говоря, глоток свежего воздуха по сравнению с тем, как я делал что-то в Zend Framework.

Однако за последние несколько лет, используя Zend Framework, я рассмотрел использование Doctrine для обеспечения отношений модели, которые ZF был довольно неуклюжим. Доктрина считала меня очень сильной и гибкой.

Итак, теперь мне интересно, прежде чем я углубился в свой новый проект CakePHP, должен ли я продолжать использовать Doctrine с моим новым выбором рамки? Какие преимущества и недостатки Doctrine приносят в таблицу (без каламбура!) По сравнению с встроенными функциями ORM и базы данных CakePHP?

4b9b3361

Ответ 1

CakePHP работает лучше всего, если используется в целом. В вашем конкретном случае, хотя вы можете использовать Doctrine вместо Cake ORM, если хотите, но вы потеряете много особенностей пирога. Напр. FormHelper делает много вещей "волшебным образом", как угадывание правильного типа ввода для полей и т.д., используя схему модели, автоматически отображая сообщение об ошибке ниже соответствующих полей в формах при неудачной проверке и т.д.

Как вы прокомментировали, у вас не так много опыта работы с Doctrine, поэтому я предлагаю придерживаться CakePHP ORM и искать вариант, только если вы считаете его неадекватным для своих нужд.

Ответ 2

Если вы уже работали с Doctrine и CakePHP ORM, вы можете решить, основываясь на основных причинах изменения:

  • Что даст вам больше производительности?
  • Что даст вам большую ремонтопригодность?
  • Что даст вам меньше кривой обучения?

Лично я бы выбрал Doctrine, основываясь на том, что он действительно специфичен для одной проблемы.