| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | --TEST--Test V8::executeString() : Call JS from PHP--SKIPIF--<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>--FILE--<?php	$a = new V8Js();// Should not work with closure$a->test = function ($params) { return (method_exists($params, 'cb1')) ? $params->cb1("hello") : false; };$ret = $a->executeString('PHP.test(function (foo) { return foo + " world"; });');var_dump(__LINE__, $ret);// Test is_a()$a->test = function ($params) { return (is_a($params, 'V8Object')) ? $params->cb1("hello") : false; };$ret = $a->executeString('PHP.test({ "cb1" : function (foo) { return foo + " world"; } });');var_dump(__LINE__, $ret);// Test is_a()$a->test = function ($params) { return (is_a($params, 'V8Function')) ? $params("hello") : false; };$ret = $a->executeString('PHP.test(function (foo) { return foo + " world"; });');var_dump(__LINE__, $ret);// Should not work with object$a->test = function ($params) { return (is_a($params, 'Closure')) ? $params("hello") : false; };$ret = $a->executeString('PHP.test({ "cb1" : function (foo) { return foo + " world"; } });');var_dump(__LINE__, $ret);// Works$a->test = function ($params) { return $params->cb1("hello"); };$ret = $a->executeString('PHP.test({ "cb1" : function (foo) { return foo + " world"; } });');var_dump(__LINE__, $ret);?>===EOF===--EXPECT--int(8)bool(false)int(13)string(11) "hello world"int(18)string(11) "hello world"int(23)bool(false)int(28)string(11) "hello world"===EOF===
 |