在我的ZEND(2.3)項目中,我有一個數據映射器來連接到MySQL數據庫。但是這個特定的網站運行在兩個數據庫上。一個MySQL數據庫和一個Solar數據庫。基於變量$solarOnline
我需要從MySQL數據庫或Solar獲取數據。Zend在數據庫之間切換
我擁有這一切只與MySQL數據庫工作。該模型的結構是:
src\
Blog\
Model\
Post\
Post.php
DataMapperInterface.php
Exception.php
Factory.php
IdentityMap.php
IdentityMapFactory.php
MySQLDataMapper.php
現在,我想我需要一個額外的DataMapper,叫SolarDataMapper.php
添加到Post
目錄,並在該文件中添加通信功能的太陽能。
但是我怎麼能夠在MySQLDataMapper
和SolarDataMapper
之間切換?
我可以做的DataMapperInterface.php
<?php
namespace Blog\Model\Post;
global $solarOnline;
if($solarOnline){
interface DataMapperInterface{
public function fetchSolarPostById($id);
}
}else{
interface DataMapperInterface{
public function fetchPostById($id);
}
}
這樣的事情或者是有另一種方式來完成這件事?任何幫助讚賞。
只是改變你創建服務的邏輯createService(){if($ solr){// solr} else {// mysql}''所以映射器在所有類中都是相同的,不需要用「solrmapper」來修改或擴展 – ins0 2014-10-02 13:31:30
這是真的,但MySQL和Solr必須同時存在。也許這在我的問題中不太清楚。 – Timo002 2014-10-02 13:33:22
確定如此兩個更新之間的一個請求lifecircle映射器可以不同?如果是這樣,您可以告訴servicemanager每次調用它時都需要一個新實例,每次調用該服務時都會調用createService。我認爲這是更清潔,然後編輯所有類和更新的目的 – ins0 2014-10-02 13:35:28