3 function regular($a, $b, $c) {
4 echo '* ', __FUNCTION__
, "\n";
8 function variadic($a, ...$args) {
9 echo '* ', __FUNCTION__
, "\n";
14 public function __construct($a, $b, $c) {
15 echo '* ', __METHOD__
, "\n";
19 public static function __callStatic($name, $args) {
20 echo '* ', __METHOD__
, ' for ', $name, "\n";
24 public function __call($name, $args) {
25 echo '* ', __METHOD__
, ' for ', $name, "\n";
29 public static function stRegular($a, $b, $c) {
30 echo '* ', __METHOD__
, "\n";
34 public function regular($a, $b, $c) {
35 echo '* ', __METHOD__
, "\n";
39 public static function stVariadic($a, ...$args) {
40 echo '* ', __METHOD__
, "\n";
44 public function variadic($a, ...$args) {
45 echo '* ', __METHOD__
, "\n";
50 function test_call_array_equivalent($args) {
51 echo "= ", __FUNCTION__
, " =", "\n";
57 C
::stRegular(...$args);
58 C
::stVariadic(...$args);
60 $inst = new C(...$args);
61 $inst->regular(...$args);
62 $inst->variadic(...$args);
63 $inst->magic(...$args);
67 /* TODO(t4599363): support multiple unpacks
68 function test_call_array_equivalent_multi($args) {
69 echo "= ", __FUNCTION__, " =", "\n";
73 regular(...$args, ...$args);
74 variadic(...$args, ...$args);
75 C::stRegular(...$args, ...$args);
76 C::stVariadic(...$args, ...$args);
77 $inst = new C(...$args, ...$args);
78 $inst->regular(...$args, ...$args);
79 $inst->variadic(...$args, ...$args);
83 function test_param_mix($args) {
84 echo "= ", __FUNCTION__
, " =", "\n";
88 $prefix = 'passed regularly';
89 regular($prefix, ...$args);
90 variadic($prefix, ...$args);
91 C
::stRegular($prefix, ...$args);
92 C
::stVariadic($prefix, ...$args);
93 C
::stMagic($prefix, ...$args);
94 $inst = new C($prefix, ...$args);
95 $inst->regular($prefix, ...$args);
96 $inst->variadic($prefix, ...$args);
97 $inst->magic($prefix, ...$args);
100 $prefix2 = 'also passed regularly';
101 variadic($prefix, $prefix2, ...$args);
102 regular($prefix, $prefix2, ...$args);
103 regular($prefix, $prefix2, ...$args);
104 variadic($prefix, $prefix2, ...$args);
105 C
::stRegular($prefix, $prefix2, ...$args);
106 C
::stVariadic($prefix, $prefix2, ...$args);
107 C
::stMagic($prefix, $prefix2, ...$args);
108 $inst = new C($prefix, $prefix2, ...$args);
109 $inst->regular($prefix, $prefix2, ...$args);
110 $inst->variadic($prefix, $prefix2, ...$args);
111 $inst->magic($prefix, $prefix2, ...$args);
116 $a = array('a', 'b', 'c');
117 $v = Vector
{'a', 'b', 'c'};
118 // TODO(t4599379): arbitrary traversables
119 // $t = new ArrayIterator(['a', 'b', 'c']);
121 test_call_array_equivalent($a);
122 test_call_array_equivalent($v);
123 // test_call_array_equivalent($t);
125 // TODO(t4599363): support multiple unpacks
126 // test_call_array_equivalent_twice($a);
127 // test_call_array_equivalent_twice($v);
131 // test_param_mix($t);