Earlier today I was doing research on PHP\'s abstract classes, interfaces, and traits.
As far as I can tell, an abstract class says \"anything using me will be using the
It's a bit like saying if floats exist, why do integers exist, they both serve their own specific purposes, but more importantly a look at the history of PHP will shed some light on this:
PHP was initially built without any support at all for classes, and over the years more and more has been added to extend the capabilities of PHP as we push it further and further (and arguable play catch up with other OOP based languages)
2004 - Abstract classes and interfaces introduced
2012 - Traits introduced
That's an 8 year break, in that time among other things the need arose to add support for interfaces with implementations, and so the trait was born