Zend переключатель между базами данных

В моем проекте ZEND (2.3) у меня есть datamapper для подключения к базе данных MySQL. Но этот конкретный сайт работает на двух базах данных. Одна база данных MySQL и одна база данных Solar. На основании переменной $solarOnline Мне нужно получить данные из базы данных MySQL или из Solar.

У меня все это работает только с базой данных MySQL. Структура модели:

src\
Blog\
Model\
Post\
Post.php
DataMapperInterface.php
Exception.php
Factory.php
IdentityMap.php
IdentityMapFactory.php
MySQLDataMapper.php

Теперь я думаю, что мне нужно добавить дополнительный datamapper, называемый SolarDataMapper.php к Post каталог и в этом файле добавить функции связи для Solar.

Но как бы я мог переключаться между 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);
}
}

Или есть другой способ сделать это? Любая помощь приветствуется.

0

Решение

Ок, я исправил свою проблему!

В файле IdentityMapFactory.php У меня уже была функция createService(), Эта функция возвращает IdentityMap. Теперь я позволил ему вернуть 2 IdentityMaps.

public function createService(ServiceLocatorInterface $serviceLocator) {
return new IdentityMap(new MySQLDataMapper(), new SolarDataMapper());
}

В IdentityMapAbstract.php

abstract class IdentityMapAbstract {
protected $_dataMapper;
protected $_dataMapperSolr;
}

В конструкции IdentityMap.php

public function __construct(DataMapperInterface $dm, DataMapperInterface $dm1){
$this->_dataMapper = $dm;
$this->_dataMapperSolr = $dm1;
return $this;
}

И в уже существующей функции fetchPostById($id)

private function fetchPostById($id) {
if($this->solarOnline) {
$value = $this->_dataMapperSolr->fetchPostById($id);
}else{
$value = $this->_dataMapper->fetchPostById($id);
}
return $value;
}

конечно я создал файл с именем SolrDataMapper.php с его функциями Solr

0

Другие решения

Других решений пока нет …