| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- --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);
 
- }
 
- // Type safety
 
- // this is illegal, but shouldn't crash!
 
- try {
 
- 	$a->executeString("PHP.myobj.mytest.call({})", "test8.js");
 
- } catch (V8JsScriptException $e) {
 
- 	echo "exception: ", $e->getMessage(), "\n";
 
- }
 
- ?>
 
- ===EOF===
 
- --EXPECTF--
 
- 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(Testing)#%d (3) {
 
-     ["foo"]=>
 
-     string(8) "ORIGINAL"
 
-     ["my_private":"Testing":private]=>
 
-     string(3) "arf"
 
-     ["my_protected":protected]=>
 
-     string(4) "argh"
 
-   }
 
-   [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(Testing)#%d (3) {
 
-       ["foo"]=>
 
-       string(8) "ORIGINAL"
 
-       ["my_private":"Testing":private]=>
 
-       string(3) "arf"
 
-       ["my_protected":protected]=>
 
-       string(4) "argh"
 
-     }
 
-   }
 
- }
 
- exception: test8.js:1: TypeError: Illegal invocation
 
- ===EOF===
 
 
  |