Я создаю приложение на PHP, используя Zend Framework 1 и Doctrine2 в качестве слоя ORM. Все идет хорошо. Теперь я заметил, что и ZF1, и Doctrine2 поставляются с собственной реализацией кэширования и полагаются на нее. Я оценил и то и другое, и хотя у каждого есть свои плюсы и минусы, ни один из них не превосходит другого для моих простых потребностей. Кажется, что обе библиотеки написаны для их соответствующих интерфейсов, а не для их реализаций.
Причины, по которым я чувствую эту проблему, заключаются в том, что во время начальной загрузки моего приложения мне приходится настраивать два драйвера кэширования - каждый со своим собственным синтаксисом. Таким образом легко возникает несоответствие, и из-за этого кажется неэффективным устанавливать два подключения к бэкэнду кэширования.
Я пытаюсь определить, каков наилучший способ продвижения вперед, и приветствую любые идеи, которые вы можете предложить.
До сих пор я придумал четыре варианта:
- Ничего не предпринимайте, примите, что присутствуют два класса, предлагающие функциональность кэширования.
- Создайте класс Facade, чтобы прикрепить интерфейс Zend к реализации кэширования Doctrine.
- Вариант 2, наоборот - создать Facade для сопоставления интерфейса Doctrine на сервере Zend Framework.
- Используйте множественное интерфейсное наследование, чтобы создать один интерфейс, чтобы управлять ими всеми, и молитесь, чтобы не было никаких совпадений (то есть: если у обоих есть метод "save", им нужно будет принимать параметры в том же порядке из-за PHP отсутствие правильного полиморфизма).
Какой вариант лучше, или есть вариант «Ни один из вышеперечисленных», о котором я не знаю?