Hello, I was just skimming through Traits RFC document on the wiki trying to find a practical use for them. The first thing that comes to my mind is a Singleton implementation - this is where I found myself literally "copying" most of the code in the past. As far as I know there is no way to implement this pattern properly in PHP without duplicate code (due to lack of multiple inheritance/templating).
Unfortunately, the same RFC document mentions this for trait methods: The static modifier is not supported, because it would change the methods > semantics and references to $this would break. > .. and that pretty much defeats Singleton-Trait implementation. Is there any particular technical/design reasons why traits can't handle $this inside static methods just like regular static methods do (with a fatal error)? p.s. a Singleton-Trait implementation could look like: trait Singleton { public static function getInstance() { ... } } class Child extends Parent { use Singleton; } Child::getInstance();