Object type inheritance
Each class and interface is a type. There are also various types that PHP has built-in and that your class or interface might also incorporate.
Any object is an instance of a specific class – the class that it was created from using the new
keyword. This is the most obvious type for the object. After that, it is the class's parent class (if it has one), and then its grandparent class (again if it has one)… all the way up to the grandest-parentiest class at the top of the hierarchical chain.
Further to this, each class is also every interface it implements, and the parent and grandparent (and so on) interfaces of those interfaces, again all the way to the top. Remember, a single class can implement multiple interfaces and those interfaces can all extend further interfaces.
As you can imagine, this can get confusing, and it's one reason why massive inheritance chains can be a bad thing when it comes to having comprehensible code...