generators_from_v8_005.phpt 646 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. --TEST--
  2. Test V8::executeString() : Generators V8 -> PHP (instantiate in PHP + iterate in JS)
  3. --SKIPIF--
  4. <?php
  5. require_once(dirname(__FILE__) . '/skipif.inc');
  6. if (!class_exists('V8Generator')) {
  7. die("skip Installed V8 version doesn't support generators");
  8. }
  9. ?>
  10. --FILE--
  11. <?php
  12. $js = <<<EOJS
  13. function* TheGen() {
  14. for(var i = 0; i < 4; i ++) {
  15. yield i;
  16. }
  17. }
  18. TheGen;
  19. EOJS;
  20. $v8 = new V8Js();
  21. $TheGen = $v8->executeString($js);
  22. $gen = $TheGen();
  23. $js = <<<EOJS
  24. (function(gen) {
  25. for(var i of gen) {
  26. var_dump(i);
  27. }
  28. })
  29. EOJS;
  30. $fn = $v8->executeString($js);
  31. $fn($gen);
  32. ?>
  33. ===EOF===
  34. --EXPECTF--
  35. int(0)
  36. int(1)
  37. int(2)
  38. int(3)
  39. ===EOF===