Загрузка и использование API обоих DBAL должны быть простыми.
Мне кажется, что основной проблемой является повторное использование соединения с БД, то есть один запрос, путь выполнения которого использует как Doctrine
, так и Zend_Db
, не должен открывать отдельные соединения.
Похоже, что Doctrine\DBAL\Connection
имеет метод getWrappedConnection()
, который возвращает, например, соединение PDO
(фактически подкласс класса PDO
SPL, но все еще является экземпляром PDO). В принципе, вы могли бы сначала загрузить Doctrine, захватить это соединение и каким-то образом «передать это» в Zend_Db_Adapter
. Однако, хотя я вижу метод с именем Zend_Db_Adapter_Abstract::getConnection()
, я не вижу метод с именем setConnection()
. Возможно, создать пользовательский подкласс для нужного Zend_Db
адаптера?
Другая проблема, которую я вижу, заключается в том, что Doctrine\DBAL\Connection::getWrappedConnection()
фактически открывает соединение с БД. Если мы вызовем это во время начальной загрузки и затем передадим это соединение стороне Zend_Db
, то мы потеряем функцию ленивого соединения обоих DBAL.
Конечно, если никакой путь выполнения не должен вызывать как Doctrine
, так и Zend_Db
, то, возможно, проблем нет. Просто загрузите их оба и позвольте вашему коду вызывать тот, который ему нужен. И если у вас есть вычислительная мощность, чтобы справиться с этим, то, возможно, два соединения на запрос не являются убийцей игры (хотя это кажется мне довольно серьезным).
Просто мысли вслух.