I notice that when I define a method as abstract, the signature of child classes needs to be compatible with it. This robs me of an opportunity to use the type checking in the child class' signature.
If I define the parent method as a concrete method with a default implementation, I can then override the parent method without complying with its interface.
In cases where a suitable default implementation exists, I am inclined to use the second approach. But am I letting myself in for trouble?
It just seems odd to me that the use of 'abstract' can be so limiting, so I want to know if I'm missing something...
Note - I see that similar questions have been asked in relation to other languages, but not so much PHP.