Estou construindo um aplicativo em PHP, usando o Zend Framework 1 e o Doctrine2 como a camada ORM. Tudo está indo bem. Agora, notei que o ZF1 e o Doctrine2 vêm com, e contam com, sua própria implementação de cache. Avaliei os dois e, embora cada um tenha seus próprios prós e contras, nenhum deles se destaca como superior ao outro por minhas simples necessidades. As duas bibliotecas também parecem escritas em suas respectivas interfaces, não em suas implementações.
O motivo pelo qual sinto que isso é um problema é que, durante a inicialização do meu aplicativo, tenho que configurar dois drivers de cache - cada um com sua própria sintaxe. Uma incompatibilidade é facilmente criada dessa maneira e parece ineficiente configurar duas conexões com o back-end de armazenamento em cache por causa disso.
Estou tentando determinar qual é o melhor caminho a seguir e gostaria de receber informações que você possa oferecer.
O que eu pensei até agora são quatro opções:
- Não faça nada, aceite que duas classes que oferecem funcionalidade de cache estão presentes.
- Crie uma classe Facade para colar a interface do Zend na implementação de cache do Doctrine.
- Opção 2, ao contrário - crie uma Fachada para mapear a interface do Doctrine em um back-end do Zend Framework.
- Use herança de interface múltipla para criar uma interface para governar todas elas e ore para que não haja sobreposições (ou seja: se ambos tiverem um método "save", eles precisarão aceitar parâmetros na mesma ordem devido aos PHP) falta de polimorfismo adequado).
Qual é a melhor opção ou existe uma variante "Nenhuma das opções acima" que eu não conheço?