Edit report at https://bugs.php.net/bug.php?id=64239&edit=1

 ID:                 64239
 Updated by:         larue...@php.net
 Reported by:        kusmierz at o2 dot pl
 Summary:            Debug backtrace changed behavior since 5.4.10 or
                     5.4.11
 Status:             Open
 Type:               Bug
 Package:            *General Issues
 Operating System:   Ubuntu,Debian,Windows
 PHP Version:        5.4.11
-Assigned To:        
+Assigned To:        dmitry
 Block user comment: N
 Private report:     N

 New Comment:

seems due to the new implemention of trait, not only debug_backtrace, I think 
the 
reflection is also affected.

dmitry, do you think this should be fixed?

thanks


Previous Comments:
------------------------------------------------------------------------
[2013-02-18 20:48:20] kusmierz at o2 dot pl

Description:
------------
The debug_backtrace behavior has been changed since 5.4.9. Previously first 
method 
in backtrace array was an alias name (Bmethod in my example) which seems to be 
ok 
as only one possibility to check name of trait's aliased method name (see also 
#61033). Now it returns trait's method name (t2method), which is incorrect in 
my 
mind - I can't now check which method was originally called.

Test script:
---------------
class A {
        use T1;
        public function test() { $this->backtrace(); }
}
class B {
        use T2 { t2method as Bmethod; }
}
trait T1 {
        protected function backtrace() {
                $b = new B();
                $b->Bmethod();
        }
}
trait T2 {
        public function t2method() {
                var_dump(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1));
        }
}
$a = new A(); $a->test();

Expected result:
----------------
// php 5.4.9
array(1) {
  [0]=>
  array(5) {
    ["file"]=>
    string(24) "/home/adam/test/test.php"
    ["line"]=>
    int(25)
    ["function"]=>
    string(7) "Bmethod" // OK;
    ["class"]=>
    string(1) "B"
    ["type"]=>
    string(2) "->"
  }
}

Actual result:
--------------
// php 5.4.11
array(1) {
  [0] =>
  array(5) {
    'file' =>
    string(19) "/home/adam/test.php"
    'line' =>
    int(25)
    'function' =>
    string(8) "t2method" // !
    'class' =>
    string(1) "B"
    'type' =>
    string(2) "->"
  }
}



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64239&edit=1

Reply via email to