Je construis une application en PHP, en utilisant Zend Framework 1 et Doctrine2 comme couche ORM. Tout va bien. Maintenant, j'ai remarqué que ZF1 et Doctrine2 sont livrés avec leur propre implémentation de mise en cache et s'appuient sur eux. J'ai évalué les deux, et bien que chacun ait ses propres avantages et inconvénients, aucun d'eux ne se distingue comme supérieur à l'autre pour mes besoins simples. Les deux bibliothèques semblent également être écrites sur leurs interfaces respectives, et non sur leurs implémentations.
Les raisons pour lesquelles je pense que c'est un problème sont que pendant le démarrage de mon application, je dois configurer deux pilotes de mise en cache - chacun avec sa propre syntaxe. Une incompatibilité est facilement créée de cette façon et il semble inefficace de configurer deux connexions au backend de mise en cache à cause de cela.
J'essaie de déterminer quelle est la meilleure voie à suivre et j'accueillerais volontiers toutes les informations que vous pourriez offrir.
Jusqu'à présent, j'ai pensé à quatre options:
- Ne faites rien, acceptez que deux classes offrant des fonctionnalités de mise en cache soient présentes.
- Créez une classe Facade pour coller l'interface de Zend sur l'implémentation de la mise en cache de Doctrine.
- Option 2, l'inverse - créez une façade pour mapper l'interface de Doctrine sur un backend Zend Framework.
- Utilisez l'héritage d'interfaces multiples pour créer une interface pour les gouverner tous, et priez pour qu'il n'y ait pas de chevauchements (c'est-à-dire: si les deux ont une méthode "save", ils devront accepter les paramètres dans le même ordre en raison de PHP) manque de polymorphisme approprié).
Quelle option est la meilleure ou existe-t-il une variante "Aucune des réponses ci-dessus" que je ne connais pas?