Chcę używać interfejsów, ale niektóre z moich wdrożeń opierają się na magicznych metodach, takich jak __invoke i __call. Muszę usunąć sygnatury metod, które mogą być wywoływane magicznie (w dowolnej implementacji) z interfejsu. Co prowadzi do anty-wzorcowego pustego interfejsu (Tak, właśnie to wymyśliłem).Jak używać interfejsów i magicznych metod w PHP
Jak połączyć interfejsy i magiczne metody w PHP?
Klasy abstrakcyjne, być może. – BoltClock
Może cię źle zrozumiałem. Próbowałem zdefiniować klasę Przykład, który rozszerza ABase i implementuje IA. Metoda interfejsu jest deklarowana jako abstrakcyjna w Base, a przykład ma tylko metodę __call(). PHP mówi: PHP Błąd krytyczny: Klasa ABase zawiera 1 abstrakcyjną metodę i dlatego musi zostać uznana za abstrakcyjną lub zaimplementować pozostałe metody (ABase :: do_something) –
Podstawy: rodzic (baza) ma metodę abstrakcyjną. Dlatego każde dziecko MUSI wdrożyć metodę. To samo dotyczy interfejsów. Więc jeśli Base implementuje IA, a Base deklaruje zastosowanie metody jako abstrakcyjnej, jesteś zmuszony zastosować tę metodę u każdego dziecka. Błąd mówi, że to wszystko ^^ – usoban