【发布时间】:2017-10-25 07:21:17
【问题描述】:
我正在处理我的 HMVC 项目。
现在我正在使用数据映射器在模型(域对象)和 MySQL 数据库之间移动数据。每个映射器都接收一个 MySQL 适配器作为依赖项。注入的适配器接收一个 PDO 实例(一个数据库连接)作为依赖项,并在数据库上运行 sql 查询。
我还使用依赖注入容器 (Auryn)。
我希望能够同时从不同类型的存储(MySQL 数据库、PostgreSQL 数据库、XML 提要等)中检索数据。
假设,我想从 PostgreSQL 数据库 中检索 User 数据(通过使用 PDO 数据访问抽象)来更改它,并将其保存到另一台服务器上的 MySQL 数据库(通过使用 mysqli 数据访问抽象)。因此,两种数据库类型都会有不同的数据访问调用。
我的问题是:
我是否应该为每种存储类型创建不同的映射器,例如
UserMapperPgsql(PgsqlAdapter $adapter)
UserMapperMySql(MySqlAdapter $adapter)
,或者我应该只创建一个具有更多适配器(每种数据类型一个)作为依赖项的映射器,如下所示?
UserMapper(PgsqlAdapter $adapter1, MySqlAdapter $adapter2, ...)
谢谢大家的建议!
【问题讨论】:
-
@tereško 因为我想证明,对不同的存储会有不同的数据访问调用。
标签: php oop design-patterns model-view-controller datamapper