Edit report at https://bugs.php.net/bug.php?id=62069&edit=1
ID: 62069 Updated by: dmi...@php.net Reported by: larue...@php.net Summary: binding wrong traits if they have same name methods -Status: Assigned +Status: Feedback Type: Bug Package: Scripting Engine problem PHP Version: 5.4.3 Assigned To: dmitry Block user comment: N Private report: N Previous Comments: ------------------------------------------------------------------------ [2012-05-21 12:15:06] dmi...@php.net I think this is not a bug (at least according to documentation http://php.net/manual/en/language.oop5.traits.php). The alias defined using "as" statement adds an *additional* name but doesn't resolve the conflict. The proper test would be: <?php trait T1 { public function func() { echo "From T1\n"; } } trait T2 { public function func() { echo "From T2\n"; } } class Bar { use T1, T2 { T1::func insteadof T2; T1::func as f1; T2::func as f2; } } $x = new Bar(); $x->f1(); $x->f2(); $x->func(); Expected result: ---------------- >From T1 >From T2 >From T1 It's passed fine, however the whole traits concept is messed and not intuitive. ------------------------------------------------------------------------ [2012-05-20 08:41:16] larue...@php.net @gron, oh, I see, thanks. ------------------------------------------------------------------------ [2012-05-20 07:19:52] g...@php.net @laruence it is intended behavior to have no fatal error in this case. The method of the class has precedence and solves the conflict explicitly. If the class does not define a method with that name, the conflict remains unsolved, and you will get an error. ------------------------------------------------------------------------ [2012-05-20 04:53:35] larue...@php.net @gron, the second example is try to description another bug of the first example, that is , if the class have a own defined same name as trait, no fatal error occurred, :) ------------------------------------------------------------------------ [2012-05-19 13:55:05] g...@php.net Hi Laruence: The first example is a bug, indeed. Why is the second example a bug? To me it looks like the perfectly intended traits semantics, no? ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=62069 -- Edit this bug report at https://bugs.php.net/bug.php?id=62069&edit=1