?

Log in

No account? Create an account
Нэцкэ

PDO, Адаптеры, мосты

На сегодняшний день есть несколько хороших, стабильных и признанных наборов библиотек, которые хотелось бы использовать.
В первую очередь интересуют конечно Zend, eZ и Doctrine.


Все они для работы с БД используют PDO и другие драйверы, если PDO не дает возможности доступа к БД. Все они содержат "адаптеры" к PDO, для реализации фичей вроде quote_identifier, которых нет в интерфейсе PDO. Zend и Ez поверх адапетров имеет еще и построителей запросов, поверх которых имеется легкий persistance layer (на ORM это не тянет ИМХО). Доктрина поверх адаптеров строит полноценный ORM.

Хотелось бы придумать какой-то удобный механизм кооперации этих компонентов, -- ведь в самом низу у них общий драйвер PDO. Скорее всего использовать адаптер Zend для eZ или для Доктрины вряд ли понадобится. Нужно иметь возможность получить нужный адаптер, используя конфиг системы и, по возможности, не плодить лишних соединений с БД. Простейшее решение -- сделать фабрику, которая на основе конфига или DSN (Data Source Name) создаст адаптер нужного типа.

Наверное нужен будет еще скрипт, который будет при выкладывании на сервер брать из этих библиотек, только то, что нужно,-- используемые модули без тестов и документации.

В этой схеме имеем несколько вопросов
1. Нет ли у кого такого опыта?
2. Только Доктрина позволяет создать новый адаптер передав в конструктор качестве параметра PDO объект. Поэтому, возможно, платой за мост будет несколько соединений к Базе -- по одному от каждого фреймворка. Как бы промониторить количество соединений к Базе?

Comments

Не обязательно, что будут новые соединения. В том же mysql_connect, что бы появилось новое соединение, а не вернулся линк на уже открытое, надо добавлять параметр new_link. Полагаю, что pdo работает по схожему алгоритму, если использовать параметр driver_options (не смотрел в этот список, возможно, я ошибаюсь).

По поводу остального не могу ничего сказать, мне удобнее работать с массивами.