Какой паттерн лучше всего использовать для реализации получения данных из нескольких источников (в зависимости от выбранного флага)?
Добрый день.
Задача предельно проста: существует приложение на Laravel. В этом приложении есть сущность, предположим, Event (на самом деле, в реальном приложении этих сущностей много). И каждая из этих сущностей может получать данные из одного из нескольких источников (круг этих источников может быть ограничен безграничной фантазией заказчика). Конкретно сейчас я вынужден сделать получение данных из базы и из внешнего API в зависимости от ключа-флага, который присутствует в базе данных у конкретной сущности Date. Если из базы извлекать можно простым Eloquent, то в итоге эти модели оказываются невозможно использовать с внешним источником данных, при этом необходимо использовать ряд функционала из них, например, методы paginate(), all(), get() и так далее.
Необходимо использовать один или несколько шаблонов, чтобы было легко добавить, как новые сущности, так и новые места для получения данных (к примеру, сейчас обсуждается вопрос о том, чтобы получить данные из CSV файла).
Буду благодарен, если тыкнете носом в нужный паттерн и варианты его реализации, чтобы я немного разобрался в теме.
То, что нужно использовать репозиторий - понятно. Вопрос еще в том, каким образом к нему подвязать модели, чтобы возможно было использовать и их функционал, в том числе.
diamond, Это понятно. Поэтому этот вопрос и возник. Laravel Eloquent - в чистом виде реализация Active Record. Каким образом можно связать AR и Repository - не представляю.
На текущем этапе подумал, что самым грамотным вариантом будет отказ от Eloquent Model из-за их тесной связи со слоем хранения данных, а создание класса Entity, который будет, по-факту объектной репрезентацией некой структуры данных. Затем создание Persistent-слоя, причем, возможно, с Data Mapper-ом.