generators_to_v8_003.phpt 879 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. --TEST--
  2. Test V8::executeString() : Generators PHP -> V8 (instantiate in JS, iterate in PHP)
  3. --SKIPIF--
  4. <?php
  5. require_once(dirname(__FILE__) . '/skipif.inc');
  6. // Actually this check is a bit bad as it tests import, but currently
  7. // there is no flag we can check for export
  8. if (!class_exists('V8Generator')) {
  9. die("skip Installed V8 version doesn't support generators");
  10. }
  11. ?>
  12. --FILE--
  13. <?php
  14. $v8 = new V8Js();
  15. $v8->Gen = function() {
  16. for($i = 0; $i < 6; $i ++) {
  17. yield $i;
  18. }
  19. };
  20. $JS = <<<EOJS
  21. var g = PHP.Gen();
  22. var_dump(g.next());
  23. var_dump(g.next());
  24. (g);
  25. EOJS;
  26. $gen = $v8->executeString($JS);
  27. foreach($gen as $i) {
  28. var_dump($i);
  29. }
  30. ?>
  31. ===EOF===
  32. --EXPECTF--
  33. object(Object)#%d (2) {
  34. ["value"] =>
  35. int(0)
  36. ["done"] =>
  37. bool(false)
  38. }
  39. object(Object)#%d (2) {
  40. ["value"] =>
  41. int(1)
  42. ["done"] =>
  43. bool(false)
  44. }
  45. int(2)
  46. int(3)
  47. int(4)
  48. int(5)
  49. ===EOF===