Buduję aplikację w PHP, używając Zend Framework 1 i Doctrine2 jako warstwy ORM. Wszystko idzie dobrze. Teraz zauważyłem, że zarówno ZF1, jak i Doctrine2 mają własną implementację buforowania i polegają na niej. Oceniłem oba, i chociaż każdy ma swoje zalety i wady, żaden z nich nie wyróżnia się na tle innych pod względem moich prostych potrzeb. Obie biblioteki również wydają się być napisane przeciwko ich odpowiednim interfejsom, a nie ich implementacjom.
Powodem, dla którego uważam, że jest to problem, jest to, że podczas ładowania aplikacji muszę skonfigurować dwa sterowniki buforowania - każdy z własną składnią. W ten sposób można łatwo utworzyć niedopasowanie i dlatego nie jest możliwe skonfigurowanie dwóch połączeń z zapleczem buforowania.
Staram się ustalić, co jest najlepszym rozwiązaniem, i chętnie przyjmę wszelkie spostrzeżenia, które możesz zaoferować.
Do tej pory wymyśliłem cztery opcje:
- Nie rób nic, zaakceptuj obecność dwóch klas oferujących funkcje buforowania.
- Utwórz klasę Fasada, aby przykleić interfejs Zend do implementacji buforowania Doctrine.
- Opcja 2, odwrotnie - utwórz fasadę, aby zmapować interfejs Doctrine na backendie Zend Framework.
- Użyj dziedziczenia wielu interfejsów, aby utworzyć jeden interfejs, aby rządzić nimi wszystkimi, i módl się, aby nie nakładały się na siebie (tj. Jeśli oba mają metodę „zapisz”, będą musiały akceptować parametry w tej samej kolejności ze względu na PHP brak właściwego polimorfizmu).
Która opcja jest najlepsza lub czy istnieje wariant „Żaden z powyższych”, o którym nie wiem?