Я работаю над моим проектом 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, ...)
Спасибо всем за ваши предложения!
Какой у вас там странный проект.
Тем не мение. Я бы пошел с двумя отдельными мапперами для отдельных носителей. Потому что попытка манипулирования этими адаптерами внутри картографа может оказаться довольно сложной.
Тем не менее, в зависимости от того, насколько сложна логика персистенции на самом деле, вы можете извлечь выгоду из поиска хранилища как подход к упорядочению API, это показывает, где фактически выполняется ваша «логика приложения».
Других решений пока нет …