context_preserving.phpt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. --TEST--
  2. Test V8::executeString() : test context preserving
  3. --SKIPIF--
  4. <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
  5. --FILE--
  6. <?php
  7. $JS_set = <<< EOT
  8. var preserved = "ORIGINAL";
  9. print("Set variable (" + PHP.ctx + ")\\n");
  10. EOT;
  11. $JS_change = <<< EOT
  12. preserved = "CHANGED";
  13. print("Change variable (" + PHP.ctx + ")\\n");
  14. EOT;
  15. $JS_read = <<< EOT
  16. print("Read variable (" + PHP.ctx + ")\\n");
  17. print("Result: " + preserved + "\\n");
  18. EOT;
  19. // First context: Set variable
  20. $a = new V8Js();
  21. $a->ctx = '#1';
  22. try {
  23. echo '1. ';
  24. $a->executeString($JS_set, 'set.js');
  25. } catch (V8JsScriptException $e) {
  26. var_dump($e);
  27. }
  28. // Second context: Change variable
  29. $b = new V8Js();
  30. $b->ctx = '#2';
  31. try {
  32. echo '2. ';
  33. $b->executeString($JS_change, 'change.js');
  34. } catch (V8JsScriptException $e) {
  35. var_dump($e);
  36. }
  37. // First context: Read variable
  38. try {
  39. echo '3. ';
  40. $a->executeString($JS_read, 'read.js');
  41. } catch (V8JsScriptException $e) {
  42. var_dump($e);
  43. }
  44. // First context: Change variable
  45. try {
  46. echo '4. ';
  47. $a->executeString($JS_change, 'change.js');
  48. } catch (V8JsScriptException $e) {
  49. var_dump($e);
  50. }
  51. // First context: Read variable again
  52. try {
  53. echo '5. ';
  54. $a->executeString($JS_read, 'read.js');
  55. } catch (V8JsScriptException $e) {
  56. var_dump($e);
  57. }
  58. ?>
  59. ===EOF===
  60. --EXPECT--
  61. 1. Set variable (#1)
  62. 2. Change variable (#2)
  63. 3. Read variable (#1)
  64. Result: ORIGINAL
  65. 4. Change variable (#1)
  66. 5. Read variable (#1)
  67. Result: CHANGED
  68. ===EOF===