我寫在PHP的系統具有寫三個持久層:PHP DataMapper的多個持久層
- 一個web服務
- 兩個數據庫(一個MySQL的一個MSSQL)
原因是遺留系統,無法更改。
我想使用DataMapper模式,我試圖建立最好的方式來實現我想要的。我有一個接口類似如下:
<?php
$service = $factory->getService()->create($entity);
?>
下面是一些做作和減少代碼簡潔:
<?php
class Post extends AbstractService
{
protected $_mapper;
public function create(Entity $post)
{
return $this->_mapper->create($post);
}
}
class AbstractMapper
{
protected $_persistence;
public function create(Entity $entity)
{
$data = $this->_prepareForPersistence($entity);
return $this->_persistence->create($data);
}
}
?>
我的問題是,因爲有三個持久層,將有也因此可能是一個每個需要三個映射器。我想要一個乾淨的設計模式啓發界面,使這項工作。
我認爲這是有三個選項:
- 進樣3名映射器到服務,並呼籲各
- $ _mapper創建是一個數組/集合,並通過他們遍歷每個 調用創建
- $ _mapper實際上是一個容器對象,作爲一個 進一步代理並呼籲各
創造的東西令我錯每個T的這些解決方案,並會欣賞任何反饋/認可的設計模式,可能適合這一點。