Sto costruendo un'applicazione in PHP, usando Zend Framework 1 e Doctrine2 come layer ORM. Tutto sta andando bene. Ora, mi è capitato di notare che sia ZF1 che Doctrine2 arrivano e fanno affidamento sulla loro implementazione di memorizzazione nella cache. Ho valutato entrambi, e mentre ognuno ha i propri pro e contro, nessuno dei due si distingue come superiore all'altro per le mie esigenze semplici. Entrambe le librerie sembrano essere scritte contro le loro rispettive interfacce, non con le loro implementazioni.
I motivi per i quali ritengo che questo sia un problema è che durante il bootstrap della mia applicazione, devo configurare due driver di memorizzazione nella cache, ognuno con la propria sintassi. Una mancata corrispondenza viene facilmente creata in questo modo e, a causa di ciò, risulta inefficiente impostare due connessioni al back-end di memorizzazione nella cache.
Sto provando a determinare quale sia la migliore strada da seguire, e accolgo con favore eventuali approfondimenti che potresti essere in grado di offrire.
Ciò che ho pensato finora sono quattro opzioni:
- Non fare nulla, accetta che siano presenti due classi che offrono funzionalità di memorizzazione nella cache.
- Crea una classe di facciata per attaccare l'interfaccia di Zend all'implementazione della cache di Doctrine.
- Opzione 2, viceversa - crea una facciata per mappare l'interfaccia di Doctrine su un backend Zend Framework.
- Utilizza l'ereditarietà dell'interfaccia multipla per creare un'interfaccia per domarli tutti e pregare che non vi siano sovrapposizioni (ovvero: se entrambi hanno un metodo "salva", dovranno accettare parametri nello stesso ordine a causa della mancanza di un adeguato polimorfismo di PHP).
Quale opzione è la migliore, o c'è una variante "Nessuna delle precedenti" di cui non sono a conoscenza?