yield_precedence.phpt 796 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. --TEST--
  2. Precedence of yield and arrow operators
  3. --FILE--
  4. <?php
  5. function gen() {
  6. yield "a" . "b";
  7. yield "a" or die;
  8. yield "k" => "a" . "b";
  9. yield "k" => "a" or die;
  10. var_dump([yield "k" => "a" . "b"]);
  11. yield yield "k1" => yield "k2" => "a" . "b";
  12. yield yield "k1" => (yield "k2") => "a" . "b";
  13. var_dump([yield "k1" => yield "k2" => "a" . "b"]);
  14. var_dump([yield "k1" => (yield "k2") => "a" . "b"]);
  15. }
  16. $g = gen();
  17. for ($g->rewind(), $i = 1; $g->valid(); $g->send($i), $i++) {
  18. echo "{$g->key()} => {$g->current()}\n";
  19. }
  20. ?>
  21. --EXPECT--
  22. 0 => ab
  23. 1 => a
  24. k => ab
  25. k => a
  26. k => ab
  27. array(1) {
  28. [0]=>
  29. int(5)
  30. }
  31. k2 => ab
  32. k1 => 6
  33. 2 => 7
  34. 3 => k2
  35. k1 => 9
  36. 10 => ab
  37. k2 => ab
  38. k1 => 12
  39. array(1) {
  40. [0]=>
  41. int(13)
  42. }
  43. 11 => k2
  44. k1 => 14
  45. array(1) {
  46. [15]=>
  47. string(2) "ab"
  48. }