在我的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