mirror of
https://github.com/php/php-src.git
synced 2024-11-27 11:53:33 +08:00
de6e401e05
This makes debug_print_backtrace() use the same formatting as exception backtraces. The only difference is that the final #{main} is omitted, because it wouldn't make sense for limited backtraces, and wasn't there previously either.
98 lines
1.6 KiB
PHP
98 lines
1.6 KiB
PHP
--TEST--
|
|
Backtrace during attribute instance creation
|
|
--FILE--
|
|
<?php
|
|
|
|
#[Attribute]
|
|
class MyAttribute {
|
|
public function __construct() {
|
|
debug_print_backtrace();
|
|
var_dump(debug_backtrace());
|
|
var_dump((new Exception)->getTrace());
|
|
}
|
|
}
|
|
|
|
#[MyAttribute]
|
|
class Test {}
|
|
|
|
(new ReflectionClass(Test::class))->getAttributes()[0]->newInstance();
|
|
|
|
?>
|
|
--EXPECTF--
|
|
#0 %s031_backtrace.php(12): MyAttribute->__construct()
|
|
#1 %s(%d): ReflectionAttribute->newInstance()
|
|
array(2) {
|
|
[0]=>
|
|
array(7) {
|
|
["file"]=>
|
|
string(%d) "%s031_backtrace.php"
|
|
["line"]=>
|
|
int(12)
|
|
["function"]=>
|
|
string(11) "__construct"
|
|
["class"]=>
|
|
string(11) "MyAttribute"
|
|
["object"]=>
|
|
object(MyAttribute)#1 (0) {
|
|
}
|
|
["type"]=>
|
|
string(2) "->"
|
|
["args"]=>
|
|
array(0) {
|
|
}
|
|
}
|
|
[1]=>
|
|
array(7) {
|
|
["file"]=>
|
|
string(%d) "%s"
|
|
["line"]=>
|
|
int(%d)
|
|
["function"]=>
|
|
string(11) "newInstance"
|
|
["class"]=>
|
|
string(19) "ReflectionAttribute"
|
|
["object"]=>
|
|
object(ReflectionAttribute)#2 (0) {
|
|
}
|
|
["type"]=>
|
|
string(2) "->"
|
|
["args"]=>
|
|
array(0) {
|
|
}
|
|
}
|
|
}
|
|
array(2) {
|
|
[0]=>
|
|
array(6) {
|
|
["file"]=>
|
|
string(%d) "%s031_backtrace.php"
|
|
["line"]=>
|
|
int(12)
|
|
["function"]=>
|
|
string(11) "__construct"
|
|
["class"]=>
|
|
string(11) "MyAttribute"
|
|
["type"]=>
|
|
string(2) "->"
|
|
["args"]=>
|
|
array(0) {
|
|
}
|
|
}
|
|
[1]=>
|
|
array(6) {
|
|
["file"]=>
|
|
string(%d) "%s"
|
|
["line"]=>
|
|
int(%d)
|
|
["function"]=>
|
|
string(11) "newInstance"
|
|
["class"]=>
|
|
string(19) "ReflectionAttribute"
|
|
["type"]=>
|
|
string(2) "->"
|
|
["args"]=>
|
|
array(0) {
|
|
}
|
|
}
|
|
}
|