123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- --TEST--
- Test V8::executeString() : Calling methods of object passed from PHP
- --SKIPIF--
- <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
- --INI--
- date.timezone=UTC
- --FILE--
- <?php
- // Test class
- class Testing
- {
- public $foo = 'ORIGINAL';
- private $my_private = 'arf'; // Should not show in JS side
- protected $my_protected = 'argh'; // Should not show in JS side
- function mytest($a, $b, $c = NULL)
- {
- var_dump(func_get_args());
- }
- function mydatetest(DateTime $date, $b) {
- $date->setTimeZone(new DateTimeZone(ini_get('date.timezone')));
- echo $date->format(DateTime::RFC1123), "\n";
- var_dump($b);
- }
- }
- $a = new V8Js();
- $a->myobj = new Testing();
- $a->executeString("PHP.myobj.mytest('arg1', 'arg2');", "test1.js");
- $a->executeString("PHP.myobj.mytest(true, false, 1234567890);", "test2.js");
- $a->executeString("PHP.myobj.mytest(3.14, 42, null);", "test3.js");
- // Invalid parameters
- try {
- $a->executeString("PHP.myobj.mytest();", "test4.js");
- } catch (V8JsScriptException $e) {
- echo $e->getMessage(), "\n";
- }
- try {
- $a->executeString("PHP.myobj.mytest('arg1', 'arg2', 'arg3', 'extra_arg');", "test5.js");
- } catch (V8JsScriptException $e) {
- echo $e->getMessage(), "\n";
- }
- try {
- echo "\nTEST: Javascript Date -> PHP DateTime\n";
- echo "======================================\n";
- $a->executeString("date = new Date('September 8, 1975 09:00:00 GMT'); print(date.toUTCString() + '\\n'); PHP.myobj.mydatetest(date, 'foo');", "test6.js");
- } catch (V8JsScriptException $e) {
- echo $e->getMessage(), "\n";
- }
- // Array / Object
- try {
- $a->executeString("PHP.myobj.mytest(PHP.myobj, new Array(1,2,3), new Array('foo', 'bar', PHP.myobj));", "test7.js");
- } catch (V8JsScriptException $e) {
- var_dump($e);
- }
- ?>
- ===EOF===
- --EXPECT--
- array(2) {
- [0]=>
- string(4) "arg1"
- [1]=>
- string(4) "arg2"
- }
- array(3) {
- [0]=>
- bool(true)
- [1]=>
- bool(false)
- [2]=>
- int(1234567890)
- }
- array(3) {
- [0]=>
- float(3.14)
- [1]=>
- int(42)
- [2]=>
- NULL
- }
- test4.js:1: TypeError: Testing::mytest() expects at least 2 parameters, 0 given
- array(4) {
- [0]=>
- string(4) "arg1"
- [1]=>
- string(4) "arg2"
- [2]=>
- string(4) "arg3"
- [3]=>
- string(9) "extra_arg"
- }
- TEST: Javascript Date -> PHP DateTime
- ======================================
- Mon, 08 Sep 1975 09:00:00 GMT
- Mon, 08 Sep 1975 09:00:00 +0000
- string(3) "foo"
- array(3) {
- [0]=>
- object(V8Object)#4 (3) {
- ["mytest"]=>
- object(V8Function)#6 (0) {
- }
- ["mydatetest"]=>
- object(V8Function)#7 (0) {
- }
- ["foo"]=>
- string(8) "ORIGINAL"
- }
- [1]=>
- array(3) {
- [0]=>
- int(1)
- [1]=>
- int(2)
- [2]=>
- int(3)
- }
- [2]=>
- array(3) {
- [0]=>
- string(3) "foo"
- [1]=>
- string(3) "bar"
- [2]=>
- object(V8Object)#5 (3) {
- ["mytest"]=>
- object(V8Function)#7 (0) {
- }
- ["mydatetest"]=>
- object(V8Function)#6 (0) {
- }
- ["foo"]=>
- string(8) "ORIGINAL"
- }
- }
- }
- ===EOF===
|