Voglio utilizzare le interfacce, ma alcune delle mie implementazioni si basano su metodi magici come __invoke e __call. Devo rimuovere le firme dei metodi che possono essere richiamati magicamente (in qualsiasi implementazione) dall'interfaccia. Il che porta all'interfaccia vuota anti-pattern (Sì, l'ho appena inventato).Come utilizzare interfacce e metodi magici in PHP
Come si combinano interfacce e metodi magici in PHP?
Classi astratte, forse. – BoltClock
Forse ti ho frainteso. Ho provato a definire un esempio di classe che estende ABase e implementa IA. Il metodo dell'interfaccia è dichiarato astratto in Base e l'Esempio ha solo un metodo __call(). PHP dice: PHP Errore fatale: Class ABase contiene 1 metodo astratto e deve quindi essere dichiarato astratto o implementare i restanti metodi (ABase :: do_something) –
Bene, i fondamenti: parent (Base) ha un metodo astratto. Pertanto, qualsiasi bambino DEVE implementare il metodo. Lo stesso è con le interfacce. Quindi, se Base implementa IA e Base dichiara la sua implementazione del metodo come astratta, sei costretto a implementare il metodo in qualsiasi bambino. L'errore dice tutto ^^ – usoban