use_after_dispose.phpt 628 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. --TEST--
  2. Test V8::executeString() : Use after dispose
  3. --SKIPIF--
  4. <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
  5. --FILE--
  6. <?php
  7. class Foo {
  8. function callMe($x) {
  9. var_dump($x);
  10. $this->x = $x;
  11. }
  12. }
  13. $v8 = new V8Js();
  14. $v8->foo = $foo = new Foo();
  15. $JS = <<< EOT
  16. PHP.foo.callMe({ bla: 23 });
  17. EOT;
  18. $v8->executeString($JS, 'basic.js');
  19. unset($v8);
  20. try {
  21. var_dump($foo->x);
  22. }
  23. catch(V8JsException $e) {
  24. var_dump($e->getMessage());
  25. }
  26. ?>
  27. ===EOF===
  28. --EXPECTF--
  29. object(V8Object)#%d (1) {
  30. ["bla"]=>
  31. int(23)
  32. }
  33. object(V8Object)#%d (0) {
  34. }
  35. string(55) "Can't access V8Object after V8Js instance is destroyed!"
  36. ===EOF===