mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
f34114b1fb
When dumping default values in ReflectionXXX::__toString(), for expression initializers print the AST export instead of trying to evaluate the expression. With the introduction of "new in initializers" the result of the evaluation will commonly not be printable at all, and "__toString" will throw an exception, which is not particularly useful. Using the AST export also provides more information on how the parameter was originally declared, e.g. it preserves the fact that a certain constant was used. Closes GH-7540.
83 lines
1.3 KiB
PHP
83 lines
1.3 KiB
PHP
--TEST--
|
|
Fixed bug #45765 (ReflectionObject with default parameters of self::xxx cause an error)
|
|
--FILE--
|
|
<?php
|
|
|
|
class foo2 {
|
|
const BAR = 'foobar';
|
|
}
|
|
|
|
class foo extends foo2 {
|
|
const BAR = "foo's bar";
|
|
|
|
function test($a = self::BAR) {
|
|
}
|
|
|
|
function test2($a = parent::BAR) {
|
|
}
|
|
|
|
function test3($a = foo::BAR) {
|
|
}
|
|
|
|
function test4($a = foo2::BAR) {
|
|
}
|
|
}
|
|
|
|
echo new ReflectionObject(new foo);
|
|
|
|
?>
|
|
--EXPECTF--
|
|
Object of class [ <user> class foo extends foo2 ] {
|
|
@@ %s 7-21
|
|
|
|
- Constants [1] {
|
|
Constant [ public string BAR ] { foo's bar }
|
|
}
|
|
|
|
- Static properties [0] {
|
|
}
|
|
|
|
- Static methods [0] {
|
|
}
|
|
|
|
- Properties [0] {
|
|
}
|
|
|
|
- Dynamic properties [0] {
|
|
}
|
|
|
|
- Methods [4] {
|
|
Method [ <user> public method test ] {
|
|
@@ %s 10 - 11
|
|
|
|
- Parameters [1] {
|
|
Parameter #0 [ <optional> $a = self::BAR ]
|
|
}
|
|
}
|
|
|
|
Method [ <user> public method test2 ] {
|
|
@@ %s 13 - 14
|
|
|
|
- Parameters [1] {
|
|
Parameter #0 [ <optional> $a = parent::BAR ]
|
|
}
|
|
}
|
|
|
|
Method [ <user> public method test3 ] {
|
|
@@ %s 16 - 17
|
|
|
|
- Parameters [1] {
|
|
Parameter #0 [ <optional> $a = foo::BAR ]
|
|
}
|
|
}
|
|
|
|
Method [ <user> public method test4 ] {
|
|
@@ %s 19 - 20
|
|
|
|
- Parameters [1] {
|
|
Parameter #0 [ <optional> $a = foo2::BAR ]
|
|
}
|
|
}
|
|
}
|
|
}
|