5.4a2 trait attribute name conflict resolution

From: Date: Fri, 22 Jul 2011 15:17:48 +0000
Subject: 5.4a2 trait attribute name conflict resolution
Groups: php.internals 
Request: Send a blank email to internals+get-54129@lists.php.net to get a copy of this message
Hello folks, I've just grabbed 5.4a2 to play with traits. I've found some behaviour which I'm not sure is a bug, an inconsistency, or a design decision. Consider a trait and a class that implements it but also overrides both a trait method and a trait attribute: trait foo {
     public $zoo = 'foo::zoo';
     public function bar()
     {
         echo "in foo::bar\n";
     }
} class baz {
     use foo;
     public $zoo = 'baz::zoo';
     public function bar()
     {
         echo "in baz::bar\n";
     }
} $obj = new baz(); $obj->bar(); echo $obj->zoo, "\n"; We get: in baz::bar foo::zoo It seems this is not correct and that it should be: in baz::bar baz::zoo The traits RFC pretty clearly states that if a class method conflicts with a trait method then the trait method will be ignored, which is what's happening, but it says nothing about what happens to attributes in that same condition. Is this a bug? Thanks, -- Alex Howansky

Attachment: [application/pkcs7-signature] S/MIME Cryptographic Signature smime.p7s
« previous php.internals (#54129) next »