> Example with Rectangle and Square IMO is an example of bad naming in this
case.

I used this example because this is known problem of inheritance. Type
variants solve this problem. Square is a particular case (variant) of
Rectangle.

> PHP already has horizontal inheritance. They're called traits. How is
this an improvement in anyway?

Trait is just reusable implementation. I suggest type matching. This is
extension of type hinting. It can be used in all cases where we need to
check if an object matches some criterias before continue operation. It is
a kind of defensive programming and a replacement for many 'if-throw'
constructions.

Reply via email to