php-src/ext/reflection/tests/ReflectionMethod_defaultArg.phpt
Nikita Popov f34114b1fb Export AST for default value strings in reflection
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.
2021-10-01 16:13:35 +02:00

44 lines
730 B
PHP

--TEST--
ReflectionMethod and RECV_INIT (bug #70957 and #70958)
--FILE--
<?php
Abstract class F {
private function bar($a = self::class) {}
}
Trait T
{
private function bar($a = self::class) {}
}
class B {
use T;
}
echo new \ReflectionMethod('F', 'bar');
echo new \ReflectionMethod('T', 'bar');
echo new \ReflectionMethod('B', 'bar');
?>
--EXPECTF--
Method [ <user> private method bar ] {
@@ %s
- Parameters [1] {
Parameter #0 [ <optional> $a = 'F' ]
}
}
Method [ <user> private method bar ] {
@@ %s
- Parameters [1] {
Parameter #0 [ <optional> $a = self::class ]
}
}
Method [ <user> private method bar ] {
@@ %s
- Parameters [1] {
Parameter #0 [ <optional> $a = self::class ]
}
}