Ich erstelle eine Anwendung in PHP und verwende Zend Framework 1 und Doctrine2 als ORM-Schicht. Alles läuft gut. Jetzt bemerkte ich zufällig, dass sowohl ZF1 als auch Doctrine2 mit ihrer eigenen Caching-Implementierung geliefert werden und sich darauf verlassen. Ich habe beide bewertet, und obwohl jeder seine eigenen Vor- und Nachteile hat, ist keiner der beiden für meine einfachen Bedürfnisse dem anderen überlegen. Beide Bibliotheken scheinen auch gegen ihre jeweiligen Schnittstellen geschrieben zu sein, nicht gegen ihre Implementierungen.
Gründe, warum ich dies für ein Problem halte, sind, dass ich während des Bootstrapings meiner Anwendung zwei Caching-Treiber konfigurieren muss - jeder mit seiner eigenen Syntax. Auf diese Weise kann leicht eine Nichtübereinstimmung erstellt werden, und es ist aus diesem Grund ineffizient, zwei Verbindungen zum Caching-Backend einzurichten.
Ich versuche herauszufinden, was der beste Weg ist, und würde mich über alle Erkenntnisse freuen, die Sie möglicherweise anbieten können.
Was ich mir bisher ausgedacht habe, sind vier Optionen:
- Tun Sie nichts, akzeptieren Sie, dass zwei Klassen mit Caching-Funktionalität vorhanden sind.
- Erstellen Sie eine Facade-Klasse, um die Schnittstelle von Zend auf die Caching-Implementierung von Doctrine zu übertragen.
- Option 2, umgekehrt: Erstellen Sie eine Fassade, um die Benutzeroberfläche von Doctrine auf einem Zend Framework-Backend abzubilden.
- Verwenden Sie die Vererbung mehrerer Schnittstellen, um eine Schnittstelle zu erstellen, die alle regiert, und beten Sie, dass es keine Überlappungen gibt (dh wenn beide eine "Speichermethode" haben, müssen sie aufgrund von PHPs Parameter in derselben Reihenfolge akzeptieren Mangel an richtigem Polymorphismus).
Welche Option ist die beste oder gibt es eine "Keine der oben genannten" Variante, die mir nicht bekannt ist?