Skip to content

Commit f06df98

Browse files
committed
Add test for __invoke
1 parent 63c052d commit f06df98

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

Zend/tests/named_params/__invoke.phpt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
--TEST--
2+
Check that __invoke() works with named parameters
3+
--FILE--
4+
<?php
5+
6+
class Test {
7+
public function __invoke($a = 'a', $b = 'b') {
8+
echo "a: $a, b: $b\n";
9+
}
10+
}
11+
12+
class Test2 {
13+
public function __invoke($a = 'a', $b = 'b', ...$rest) {
14+
echo "a: $a, b: $b\n";
15+
var_dump($rest);
16+
}
17+
}
18+
19+
$test = new Test;
20+
$test(b: 'B', a: 'A');
21+
$test(b: 'B');
22+
try {
23+
$test(b: 'B', c: 'C');
24+
} catch (Error $e) {
25+
echo $e->getMessage(), "\n";
26+
}
27+
echo "\n";
28+
29+
$test2 = new Test2;
30+
$test2(b: 'B', a: 'A', c: 'C');
31+
$test2(b: 'B', c: 'C');
32+
echo "\n";
33+
34+
$test3 = function($a = 'a', $b = 'b') {
35+
echo "a: $a, b: $b\n";
36+
};
37+
$test3(b: 'B', a: 'A');
38+
$test3(b: 'B');
39+
try {
40+
$test3(b: 'B', c: 'C');
41+
} catch (Error $e) {
42+
echo $e->getMessage(), "\n";
43+
}
44+
45+
?>
46+
--EXPECT--
47+
a: A, b: B
48+
a: a, b: B
49+
Unknown named parameter $c
50+
51+
a: A, b: B
52+
array(1) {
53+
["c"]=>
54+
string(1) "C"
55+
}
56+
a: a, b: B
57+
array(1) {
58+
["c"]=>
59+
string(1) "C"
60+
}
61+
62+
a: A, b: B
63+
a: a, b: B
64+
Unknown named parameter $c

0 commit comments

Comments
 (0)