Observo que cuando defino un método como abstracto, la firma de clases secundarias debe ser compatible con él. Esto me roba la oportunidad de usar la verificación de tipo en la firma de la clase del niño.Método abstracto PHP versus método predeterminado
Si defino el método principal como un método concreto con una implementación predeterminada, puedo anular el método padre sin cumplir con su interfaz.
En los casos donde existe una implementación predeterminada adecuada, me inclino a utilizar el segundo enfoque. ¿Pero me estoy metiendo en problemas?
Sólo parece extraño para mí que el uso de 'abstracta' puede ser tan limitante, por lo que quiero saber si me falta algo ...
Nota - Veo que preguntas similares se les ha pedido en relación con otros idiomas, pero no tanto PHP.
En realidad, es una buena práctica que respete la interfaz. http://en.wikipedia.org/wiki/Liskov_substitution_principle – zerkms