001.phpt 707 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. --TEST--
  2. Basic arrow function functionality check
  3. --FILE--
  4. <?php
  5. $foo = fn() => 1;
  6. var_dump($foo());
  7. $foo = fn($x) => $x;
  8. var_dump($foo(2));
  9. $foo = fn($x, $y) => $x + $y;
  10. var_dump($foo(1, 2));
  11. // Closing over $var
  12. $var = 4;
  13. $foo = fn() => $var;
  14. var_dump($foo());
  15. // Not closing over $var, it's a parameter
  16. $foo = fn($var) => $var;
  17. var_dump($foo(5));
  18. // Close over $var by-value, not by-reference
  19. $var = 5;
  20. $foo = fn() => ++$var;
  21. var_dump($foo());
  22. var_dump($var);
  23. // Nested arrow functions closing over variable
  24. $var = 6;
  25. var_dump((fn() => fn() => $var)()());
  26. var_dump((fn() => function() use($var) { return $var; })()());
  27. ?>
  28. --EXPECT--
  29. int(1)
  30. int(2)
  31. int(3)
  32. int(4)
  33. int(5)
  34. int(6)
  35. int(5)
  36. int(6)
  37. int(6)