variadic.phpt 914 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. --TEST--
  2. Additional named params are collect into variadics
  3. --FILE--
  4. <?php
  5. function test($a, string ...$extra) {
  6. var_dump($a);
  7. var_dump($extra);
  8. // Extra named parameters do not contribute toward func_num_args() and func_get_args().
  9. var_dump(func_num_args());
  10. var_dump(func_get_args());
  11. }
  12. function test2(&...$refs) {
  13. foreach ($refs as &$ref) $ref++;
  14. }
  15. test(b: 'b', a: 'a', c: 'c', extra: 'extra');
  16. echo "\n";
  17. test('a', 'b', 'c', d: 'd');
  18. echo "\n";
  19. $x = 0;
  20. $y = 0;
  21. test2(x: $x, y: $y);
  22. var_dump($x, $y);
  23. ?>
  24. --EXPECT--
  25. string(1) "a"
  26. array(3) {
  27. ["b"]=>
  28. string(1) "b"
  29. ["c"]=>
  30. string(1) "c"
  31. ["extra"]=>
  32. string(5) "extra"
  33. }
  34. int(1)
  35. array(1) {
  36. [0]=>
  37. string(1) "a"
  38. }
  39. string(1) "a"
  40. array(3) {
  41. [0]=>
  42. string(1) "b"
  43. [1]=>
  44. string(1) "c"
  45. ["d"]=>
  46. string(1) "d"
  47. }
  48. int(3)
  49. array(3) {
  50. [0]=>
  51. string(1) "a"
  52. [1]=>
  53. string(1) "b"
  54. [2]=>
  55. string(1) "c"
  56. }
  57. int(1)
  58. int(1)