Edit report at https://bugs.php.net/bug.php?id=62069&edit=1
ID: 62069 Comment by: g...@php.net Reported by: larue...@php.net Summary: binding wrong traits if they have same name methods Status: Assigned Type: Bug Package: Scripting Engine problem PHP Version: 5.4.3 Assigned To: dmitry Block user comment: N Private report: N New Comment: 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? Previous Comments: ------------------------------------------------------------------------ [2012-05-19 06:44:30] larue...@php.net and if the class have no own func method defination, the result will be: <?php trait T1 { public function func() { echo "From T1\n"; } } trait T2 { public function func() { echo "From T2\n"; } } class Bar { use T1 { func as f1; } use T2 { func as f2; } } PHP Fatal error: Trait method func has not been applied, because there are collisions with other trait methods on Bar in /tmp/1.php on line 21 this should also be a bug. thanks :) ------------------------------------------------------------------------ [2012-05-19 06:40:54] larue...@php.net Hi, dmitry, could you please look at this? thanks the problem occurrs in zend_traits_merge_functions. in that function, it will unique the trait methods name. the fix will be a big change, since we should re-implemention the whole merge functions mechanism, maybe add the tarit name as a suffix to method name. thanks ------------------------------------------------------------------------ [2012-05-19 06:30:40] larue...@php.net Description: ------------ if a function binding more than two traits and they have same method name, the result is wrong. Test script: --------------- <?php trait T1 { public function func() { echo "From T1\n"; } } trait T2 { public function func() { echo "From T2\n"; } } class Bar { public function func() { echo "From Bar\n"; } use T1 { func as f1; } use T2 { func as f2; } } $b = new Bar(); $b->f2(); Expected result: ---------------- >From T2 Actual result: -------------- >From T1 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=62069&edit=1