On Apr 9, 2012, at 7:15 AM, Szczepan Hołyszewski wrote:

> 
> I must admit with embarrassment that after months of googling and posting 
> questions to various forums I still fail to understand the purpose of the 
> "insteadof" keyword and the insteadof clause.
> 
> As I currently see it, the whole insteadof clause is completely redundant. In 
> a clause like this:
> 
> Foo::tweak insteadof Bar;
> 
> the "insteadof Bar" part does not specify any information that is not already 
> unambiguously specified by the "Foo::tweak" part. "Foo::tweak;" already 
> conveys the intention of using tweak from the trait Foo instead of any other 
> trait that has a member named tweak. What if we are using seven such traits? 
> Do we have to list them all after insteadof? Why do we have to explicitly 
> enumerate things that we DON'T want to use?
> 
> I would like to see a small code example where the insteadof clause provides  
> information that is BOTH necessary to make the program unambiguous AND cannot 
> be conveyed with the simple "Foo::tweak;" syntax. Absent such example, I 
> consider "insteadof" harmful because it does nothing and adds a maintenance 
> chore. It should be made optional and deprecated ASAP, and removed at some 
> point in the future.

See http://us.php.net/manual/en/language.oop5.traits.php and scroll down to 
conflict resolution
to see simple example. It is used to resolve method naming conflicts when 
multiple traits are used to emulate multiple inheritance.

Tom


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to