PHP MVC:多个数据库,多个数据映射器?

时间:2017-05-24 19:29:20

标签: php oop design-patterns model-view-controller datamapper

我正在研究我的HMVC项目。

现在我正在使用数据映射器来在模型(域对象)和MySQL数据库之间移动数据。每个映射器都接收一个MySQL适配器作为依赖项。注入的适配器接收PDO实例(数据库连接)作为依赖项,并在数据库上运行SQL查询。

我还使用依赖注入容器(Auryn)。

我希望能够同时从不同类型的存储(MySQL数据库,PostgreSQL数据库,XML提要等)中检索数据。

我想说,我想从 User数据库中检索PostgreSQL数据(使用 PDO 数据访问抽象),更改它,并将其保存到另一台服务器上的 MySQL数据库(通过使用 mysqli 数据访问抽象)。因此,两种数据库类型都会有不同的数据访问调用。

我的问题是:

我应该为每种存储类型创建不同的映射器,例如

UserMapperPgsql(PgsqlAdapter $adapter) 
UserMapperMySql(MySqlAdapter $adapter)

,或者我应该只创建一个包含更多适配器的映射器(每种数据类型一个)作为依赖项,如下所示?

UserMapper(PgsqlAdapter $adapter1, MySqlAdapter $adapter2, ...)

谢谢大家的建议!

1 个答案:

答案 0 :(得分:0)

你有一个奇怪的项目。

反正。我会选择两个独立的映射器来分别存储介质。因为尝试在映射器中兼顾这些适配器可能会变得非常复杂。

也就是说,根据持久性逻辑实际结束的复杂程度,您可以通过查找repositories作为简化API的方法而受益,该方法会暴露在您的应用程序逻辑中。实际上已经完成了。