use_after_dispose.phpt 654 B

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