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: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to