| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 | --TEST--Test V8::executeString() : var_dump--SKIPIF--<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>--INI--date.timezone=UTC--FILE--<?php# Test var_dump of various types$JS = <<< EOTprint("--- JS var_dump of PHP object ----\\n");var_dump(PHP.phptypes);print("--- JS var_dump of JS object ----\\n");var types = {	undefined: undefined,	null: null,	bool: true,	string: "string",	uint: 1,	int: -1,	number: 3.141592654,	// XXX this gets parsed with local timezone,	//     which is bad for test repeatability.	//date: new Date('September 27, 1976 09:00:00 GMT'),	regexp: /regexp/,	array: [1,2,3],	object: { field: "foo" },	function: function id(x) { return x; },	phpobject: PHP.obj};var_dump(types);print("--- PHP var_dump of JS object ----\\n");types;EOT;class Foo {	  var $field = "php";}$v8 = new V8Js();$v8->obj = new Foo;$phptypes = $v8->phptypes = array(	"null" => NULL,	"bool" => true,	"string" => "string",	"uint" => 1,	"int" => -1,	"number" => 3.141592654,	"date" => new DateTime('September 27, 1976 09:00:00 UTC', new DateTimeZone('UTC')),	//"regexp" => new Regexp('/regexp/'), /* no native PHP regex type */	"array" => array(1,2,3),	"object" => array( "field" => "foo" ),	"function" => (function ($x) { return $x; }),	"phpobject" => new Foo);echo "---- PHP var_dump of PHP object ----\n";var_dump($phptypes);try {	var_dump($v8->executeString($JS, 'var_dump.js'));} catch (V8JsScriptException $e) {	echo "Error!\n";	var_dump($e);}?>===EOF===--EXPECTF------ PHP var_dump of PHP object ----array(11) {  ["null"]=>  NULL  ["bool"]=>  bool(true)  ["string"]=>  string(6) "string"  ["uint"]=>  int(1)  ["int"]=>  int(-1)  ["number"]=>  float(3.141592654)  ["date"]=>  object(DateTime)#%d (3) {    ["date"]=>    string(%d) "1976-09-27 09:00:00%r(\.0+)?%r"    ["timezone_type"]=>    int(3)    ["timezone"]=>    string(3) "UTC"  }  ["array"]=>  array(3) {    [0]=>    int(1)    [1]=>    int(2)    [2]=>    int(3)  }  ["object"]=>  array(1) {    ["field"]=>    string(3) "foo"  }  ["function"]=>  object(Closure)#%d (1) {    ["parameter"]=>    array(1) {      ["$x"]=>      string(10) "<required>"    }  }  ["phpobject"]=>  object(Foo)#%d (1) {    ["field"]=>    string(3) "php"  }}--- JS var_dump of PHP object ----array (11) {  ["null"] =>  NULL  ["bool"] =>  bool(true)  ["string"] =>  string(6) "string"  ["uint"] =>  int(1)  ["int"] =>  int(-1)  ["number"] =>  float(3.141593)  ["date"] =>  object(DateTime)#%d (18) {    ["createFromFormat"] =>    object(Closure)#%d {        function () { [native code] }    }    ["getLastErrors"] =>    object(Closure)#%d {        function () { [native code] }    }    ["format"] =>    object(Closure)#%d {        function () { [native code] }    }    ["modify"] =>    object(Closure)#%d {        function () { [native code] }    }    ["add"] =>    object(Closure)#%d {        function () { [native code] }    }    ["sub"] =>    object(Closure)#%d {        function () { [native code] }    }    ["getTimezone"] =>    object(Closure)#%d {        function () { [native code] }    }    ["setTimezone"] =>    object(Closure)#%d {        function () { [native code] }    }    ["getOffset"] =>    object(Closure)#%d {        function () { [native code] }    }    ["setTime"] =>    object(Closure)#%d {        function () { [native code] }    }    ["setDate"] =>    object(Closure)#%d {        function () { [native code] }    }    ["setISODate"] =>    object(Closure)#%d {        function () { [native code] }    }    ["setTimestamp"] =>    object(Closure)#%d {        function () { [native code] }    }    ["getTimestamp"] =>    object(Closure)#%d {        function () { [native code] }    }    ["diff"] =>    object(Closure)#%d {        function () { [native code] }    }    ["$date"] =>    string(%d) "1976-09-27 09:00:00%r(\.0+)?%r"    ["$timezone_type"] =>    int(3)    ["$timezone"] =>    string(3) "UTC"  }  ["array"] =>  array(3) {    [0] =>    int(1)    [1] =>    int(2)    [2] =>    int(3)  }  ["object"] =>  array (1) {    ["field"] =>    string(3) "foo"  }  ["function"] =>  object(Closure)#%d (0) {  }  ["phpobject"] =>  object(Foo)#%d (1) {    ["$field"] =>    string(3) "php"  }}--- JS var_dump of JS object ----object(Object)#%d (12) {  ["undefined"] =>  NULL  ["null"] =>  NULL  ["bool"] =>  bool(true)  ["string"] =>  string(6) "string"  ["uint"] =>  int(1)  ["int"] =>  int(-1)  ["number"] =>  float(3.141593)  ["regexp"] =>  regexp(/regexp/)  ["array"] =>  array(3) {    [0] =>    int(1)    [1] =>    int(2)    [2] =>    int(3)  }  ["object"] =>  object(Object)#%d (1) {    ["field"] =>    string(3) "foo"  }  ["function"] =>  object(Closure)#%d {      function id(x) { return x; }  }  ["phpobject"] =>  object(Foo)#%d (1) {    ["$field"] =>    string(3) "php"  }}--- PHP var_dump of JS object ----object(V8Object)#%d (12) {  ["undefined"]=>  NULL  ["null"]=>  NULL  ["bool"]=>  bool(true)  ["string"]=>  string(6) "string"  ["uint"]=>  int(1)  ["int"]=>  int(-1)  ["number"]=>  float(3.141592654)  ["regexp"]=>  object(V8Object)#%d (0) {  }  ["array"]=>  array(3) {    [0]=>    int(1)    [1]=>    int(2)    [2]=>    int(3)  }  ["object"]=>  object(V8Object)#%d (1) {    ["field"]=>    string(3) "foo"  }  ["function"]=>  object(V8Function)#%d (0) {  }  ["phpobject"]=>  object(Foo)#%d (1) {    ["field"]=>    string(3) "php"  }}===EOF===
 |