| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | 
							- --TEST--
 
- Test V8::executeString() : Testing lifespan of V8Js context objects
 
- --SKIPIF--
 
- <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
 
- --FILE--
 
- <?php
 
- class Foo
 
- {
 
- 	function hello() {
 
- 		echo "Hello!\n";
 
- 	}
 
- }
 
- class Testing
 
- {
 
- 	function onectx()
 
- 	{
 
- 		$v8js = new V8Js();
 
- 		$v8js->foo = new Foo;
 
- 		return $v8js->executeString("({ bar: 23, hello: function() { PHP.foo.__call('hello',[]); } })");
 
- 		// $v8js will be dereferenced here, but the result escapes.
 
- 	}
 
- }
 
- $t = new Testing();
 
- $a = $t->onectx();
 
- /* $a is no longer valid, since the associated V8Js() object has been
 
-  * destroyed.  Instead the property access will throw. */
 
- var_dump($a);
 
- try {
 
-   var_dump($a->bar);
 
- }
 
- catch(Exception $e) {
 
-   var_dump($e->getMessage());
 
- }
 
- $a->hello();
 
- ?>
 
- ===EOF===
 
- --EXPECTF--
 
- object(V8Object)#%d (0) {
 
- }
 
- string(55) "Can't access V8Object after V8Js instance is destroyed!"
 
- Fatal error: Uncaught V8JsException: Can't access V8Object after V8Js instance is destroyed! in %s%etests%ectx_lifetime.php:35
 
- Stack trace:
 
- #0 {main}
 
-   thrown in %s%etests%ectx_lifetime.php on line 35
 
 
  |