Doctrine2 слишком велик для этого проекта? - PullRequest
0 голосов
/ 07 февраля 2012

Я пишу приложение, которое управляет чем-то вроде узлов Drupal.Я планирую использовать приложение в различных системах / приложениях управления контентом (Concrete5, Wordpress, пользовательские приложения Zend & Yii и т. Д.).

Поскольку я использую его в очень многих разных местах,Я должен упаковать ORM с приложением (то есть я не могу использовать ORM для Conrete5 или Yii и т. Д.).Мне нравится Doctrine 2, но я обеспокоен тем, что это слишком «большая» форма, чтобы ее можно было упаковывать с моим приложением.

Например, становится грязно, если я включаю это приложение в приложение Zend,работает Doctrine 2. Я не хочу, чтобы два «экземпляра» Doctrine работали в одном приложении.Это обоснованное беспокойство?

Вопрос: Является ли Doctrine 2 слишком «большой» для этого проекта?Если это так, что будет хорошей альтернативой ORM?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Если вы собираетесь использовать свое приложение в качестве расширения для других CMS и / или сред, вы должны определенно использовать ORM по следующим причинам, которые мне приходят в голову:

1. Установки базы данных CMS отличаются. Некоторые используют MySQL, некоторые используют Oracle, и т. Д., И вам придется создавать свои собственные адаптеры или

2.Используйте собственные уровни абстракции базы данных CMS. Поэтому вам придется переписывать свою собственную модель для каждого плагина cms, который вы собираетесь создать.

3. Доктрина может выполнять много важных задач, но использование доктрины довольно просто. Доктрина не требует больших ресурсов.

4. Использование нескольких экземпляров доктрины, насколько я знаю, не будет проблемой.

5.hovever doctrine2 требует минимальной установки PHP 5.3, и некоторые общие серверы могут иметь более старые версии php, и эта проблема будет решена, когда пройдет время и 5.2 устареет.

Однако в некоторых CMS будет работать более одного соединения для вашего расширения (одно для запросов к собственной базе данных CMS и одно для вашего запроса доктрины).

0 голосов
/ 07 февраля 2012

Способ 1: работа с различными ORM через адаптеры

  • (+) лучшая интеграция с фреймворками

  • (-) много работы по внедрению адаптеров

  • (-) потеря гибкости (ограничена интерфейсом вашего адаптера)

Способ 2 (мой выбор): использовать PDO с FETCH_CLASS, это достаточно удобно (вы можете извлекать данные в экземпляры ваших классов). Большинство современных ORM на PHP работают через PDO, поэтому интеграция должна быть простой.

Также про Doctrine 2 & Yii - я тестировал эту комбинацию, отлично работает.

...