mirror of
https://github.com/php/php-src.git
synced 2025-08-16 14:08:47 +02:00

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.
62 lines
1.3 KiB
PHP
62 lines
1.3 KiB
PHP
--TEST--
|
|
ReflectionClass::__toString() - various parameters
|
|
--FILE--
|
|
<?php
|
|
Class A {
|
|
public function privf(Exception $a) {}
|
|
public function pubf(A $a,
|
|
$b,
|
|
C $c = null,
|
|
$d = K,
|
|
$e = "15 chars long -",
|
|
$f = null,
|
|
$g = false,
|
|
array $h = null) {}
|
|
}
|
|
|
|
Class C extends A { }
|
|
|
|
define('K', "16 chars long --");
|
|
echo new ReflectionClass("C"), "\n";
|
|
?>
|
|
--EXPECTF--
|
|
Class [ <user> class C extends A ] {
|
|
@@ %s 14-14
|
|
|
|
- Constants [0] {
|
|
}
|
|
|
|
- Static properties [0] {
|
|
}
|
|
|
|
- Static methods [0] {
|
|
}
|
|
|
|
- Properties [0] {
|
|
}
|
|
|
|
- Methods [2] {
|
|
Method [ <user, inherits A> public method privf ] {
|
|
@@ %s 3 - 3
|
|
|
|
- Parameters [1] {
|
|
Parameter #0 [ <required> Exception $a ]
|
|
}
|
|
}
|
|
|
|
Method [ <user, inherits A> public method pubf ] {
|
|
@@ %s 4 - 11
|
|
|
|
- Parameters [8] {
|
|
Parameter #0 [ <required> A $a ]
|
|
Parameter #1 [ <required> $b ]
|
|
Parameter #2 [ <optional> ?C $c = NULL ]
|
|
Parameter #3 [ <optional> $d = K ]
|
|
Parameter #4 [ <optional> $e = '15 chars long -' ]
|
|
Parameter #5 [ <optional> $f = NULL ]
|
|
Parameter #6 [ <optional> $g = false ]
|
|
Parameter #7 [ <optional> ?array $h = NULL ]
|
|
}
|
|
}
|
|
}
|
|
}
|