--TEST-- Test V8::executeString() : PHP Exception handling (multi-level) --SKIPIF-- <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?> --FILE-- <?php class Foo { function throwException() { throw new \Exception("Test-Exception"); } function recurse($i) { echo "recurse[$i] ...\n"; global $work; $work($i); } } $v8 = new V8Js(); $v8->foo = new \Foo(); $work = $v8->executeString(<<<EOT var work = function(level) { if(level--) { PHP.foo.recurse(level); } else { PHP.foo.throwException(); } }; work; EOT ); for($i = 0; $i < 5; $i ++) { var_dump($i); try { $work($i); } catch (Exception $e) { var_dump($e->getMessage()); } } ?> ===EOF=== --EXPECT-- int(0) string(14) "Test-Exception" int(1) recurse[0] ... string(14) "Test-Exception" int(2) recurse[1] ... recurse[0] ... string(14) "Test-Exception" int(3) recurse[2] ... recurse[1] ... recurse[0] ... string(14) "Test-Exception" int(4) recurse[3] ... recurse[2] ... recurse[1] ... recurse[0] ... string(14) "Test-Exception" ===EOF===