Ho notato che quando definisco un metodo come astratto, la firma delle classi figlio deve essere compatibile con esso. Questo mi priva dell'opportunità di utilizzare il controllo del tipo nella firma della classe figlio.Metodo astratto PHP rispetto al metodo predefinito
Se definisco il metodo padre come metodo concreto con un'implementazione predefinita, posso quindi eseguire l'override del metodo padre senza rispettare la sua interfaccia.
Nei casi in cui esiste un'adeguata implementazione predefinita, sono propenso a utilizzare il secondo approccio. Ma mi sto lasciando nei guai?
Sembra proprio strano che l'uso di 'astratto' può essere così limitante, quindi voglio sapere se mi manca qualcosa ...
Nota - Vedo che simili questioni sono state poste in relazione ad altre lingue, ma non così tanto a PHP.
In realtà è solo una buona pratica rispettare l'interfaccia. http://en.wikipedia.org/wiki/Liskov_substitution_principle – zerkms