@@ -11,24 +11,32 @@ function foo($a = 1, $b = 2, $c = 3) {
1111 var_dump ($ a , $ b , $ c );
1212}
1313
14+ echo "# Case 1 \n" ;
15+
1416$ c = foo (b: ?);
1517
1618echo (string ) new ReflectionFunction ($ c );
1719
1820$ c (new B );
1921
22+ echo "# Case 2 \n" ;
23+
2024$ c = $ c (?);
2125
2226echo (string ) new ReflectionFunction ($ c );
2327
2428$ c (new B );
2529
26- $ c = foo(?, ?);
27- $ c = $ c (b: ?);
30+ echo "# Case 3 \n" ;
2831
29- echo (string ) new ReflectionFunction ($ c );
32+ $ c = foo(?, ?);
33+ try {
34+ $ c = $ c (b: ?);
35+ } catch (\Throwable $ e ) {
36+ echo $ e ::class, ": " , $ e ->getMessage (), "\n" ;
37+ }
3038
31- $ c ( new B ) ;
39+ echo " # Case 4 \n" ;
3240
3341function bar ($ a = 1 , $ b = 2 , ...$ c ) {
3442 var_dump ($ a , $ b , $ c );
@@ -40,66 +48,60 @@ echo (string) new ReflectionFunction($d);
4048
4149$ d (new B , new A , new C );
4250
51+ echo "# Case 5 \n" ;
52+
4353try {
4454 $ d = bar (?, a: ?);
4555} catch (\Throwable $ e ) {
46- echo $ e ->getMessage (), "\n" ;
56+ echo $ e::class, " : " , $ e ->getMessage (), "\n" ;
4757}
4858
59+ echo "# Case 6 \n" ;
60+
4961try {
5062 $ d = bar (c: ?, ...);
5163} catch (\Throwable $ e ) {
52- echo $ e ->getMessage (), "\n" ;
64+ echo $ e::class, " : " , $ e ->getMessage (), "\n" ;
5365}
5466
5567?>
5668--EXPECTF--
69+ # Case 1
5770Closure [ <user> static function {closure:%s:%d} ] {
58- @@ %snamed_placeholders.php 11 - 11
59-
60- - Parameters [1] {
61- Parameter #0 [ <optional> $b = 2 ]
62- }
63- }
64- int(1)
65- object(B)#%d (0) {
66- }
67- int(3)
68- Closure [ <user> static function {closure:%s:%d} ] {
69- @@ %snamed_placeholders.php 17 - 17
70-
71- - Bound Variables [1] {
72- Variable #0 [ $fn ]
73- }
71+ @@ %snamed_placeholders.php 13 - 13
7472
7573 - Parameters [1] {
76- Parameter #0 [ <optional > $b = 2 ]
74+ Parameter #0 [ <required > $b ]
7775 }
7876}
7977int(1)
8078object(B)#%d (0) {
8179}
8280int(3)
81+ # Case 2
8382Closure [ <user> static function {closure:%s:%d} ] {
84- @@ %snamed_placeholders.php 24 - 24
83+ @@ %snamed_placeholders.php 21 - 21
8584
8685 - Bound Variables [1] {
8786 Variable #0 [ $fn ]
8887 }
8988
9089 - Parameters [1] {
91- Parameter #0 [ <optional > $b = 2 ]
90+ Parameter #0 [ <required > $b ]
9291 }
9392}
9493int(1)
9594object(B)#%d (0) {
9695}
9796int(3)
97+ # Case 3
98+ ArgumentCountError: {closure:pfa:%s:29}(): Argument #1 ($a) not passed
99+ # Case 4
98100Closure [ <user> static function {closure:%s:%d} ] {
99- @@ %snamed_placeholders.php 34 - 34
101+ @@ %snamed_placeholders.php 42 - 42
100102
101103 - Parameters [3] {
102- Parameter #0 [ <optional > $b = 2 ]
104+ Parameter #0 [ <required > $b ]
103105 Parameter #1 [ <optional> $a = 1 ]
104106 Parameter #2 [ <optional> ...$c ]
105107 }
@@ -113,5 +115,7 @@ array(1) {
113115 object(C)#%d (0) {
114116 }
115117}
116- Named parameter $a overwrites previous placeholder
117- Cannot use named placeholder for unknown or variadic parameter $c
118+ # Case 5
119+ Error: Named parameter $a overwrites previous placeholder
120+ # Case 6
121+ Error: Cannot use named placeholder for unknown or variadic parameter $c
0 commit comments