2012-02-18 68 views

回答

0

兩個DBAL的引導和API消耗應該很簡單。

在我看來,主要問題是重新使用數據庫連接,也就是說,一個請求的執行路徑消耗DoctrineZend_Db不應該打開單獨的連接。

看來,Doctrine\DBAL\Connection有一個方法getWrappedConnection()返回 - 例如 - 一個PDO連接(實際上SPL的PDO類的子類,但仍PDO的實例)。原則上,你可以首先引導學說,抓住這個連接,並以某種方式「傳遞」到Zend_Db_Adapter。但是,雖然我確實看到一種稱爲Zend_Db_Adapter_Abstract::getConnection()的方法,但我沒有看到一個名爲setConnection()的方法。也許爲所需的Zend_Db適配器創建一個自定義子類?

我看到的另一個問題是,Doctrine\DBAL\Connection::getWrappedConnection()實際上打開連接數據庫。如果我們在bootstrap過程中調用此方法,然後將該連接傳遞給Zend_Db一側,那麼我們將失去兩個DBAL的延遲連接功能。

當然,如果沒有執行路徑需要同時調用DoctrineZend_Db,那麼也許沒有問題。只需引導他們兩個,讓你的代碼調用它需要的任何一個。如果你有處理能力來處理它,那麼每個請求可能有兩個連接不是遊戲殺手(儘管它讓我感覺非常嚴重)。

只想大聲。

+0

MWOP在[this podast]中注意到(http://voicesoftheelephpant.com/2012/02/21/interview-with-matthew-weier-ophinney/)ZF2'Zend \ Db'重寫的目標之一是爲了促進'Zend \ Db'和'Doctrine2'之間的連接共享。 – 2012-02-22 08:16:53

相關問題