array_pass.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. --TEST--
  2. Test V8::executeString() : Check passing array from JS to PHP
  3. --SKIPIF--
  4. <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
  5. --FILE--
  6. <?php
  7. $v8 = new V8Js();
  8. $v8->test = function ($arr) { var_dump($arr); };
  9. try {
  10. $v8->executeString('PHP.test([0, 1, 2]);');
  11. } catch (V8JsScriptException $e) {
  12. var_dump($e->getMessage());
  13. }
  14. try {
  15. $v8->executeString('PHP.test({ "0" : "0", "1" : "1", "2" : "2" });');
  16. } catch (V8JsScriptException $e) {
  17. var_dump($e->getMessage());
  18. }
  19. try {
  20. $v8->executeString('PHP.test({ "0" : "foo", "1" : "bar", "2" : "baz" });');
  21. } catch (V8JsScriptException $e) {
  22. var_dump($e->getMessage());
  23. }
  24. try {
  25. $v8->executeString('PHP.test({ "foo" : "0", "bar" : "1", "baz" : "2" });');
  26. } catch (V8JsScriptException $e) {
  27. var_dump($e->getMessage());
  28. }
  29. try {
  30. // includes gap
  31. $v8->executeString('PHP.test({ "0" : "0", "2" : "2", "3" : "3" });');
  32. } catch (V8JsScriptException $e) {
  33. var_dump($e->getMessage());
  34. }
  35. try {
  36. // mixed key types
  37. $v8->executeString('PHP.test({ "0" : "0", "bar" : "1", "2" : "2" });');
  38. } catch (V8JsScriptException $e) {
  39. var_dump($e->getMessage());
  40. }
  41. ?>
  42. ===EOF===
  43. --EXPECT--
  44. array(3) {
  45. [0]=>
  46. int(0)
  47. [1]=>
  48. int(1)
  49. [2]=>
  50. int(2)
  51. }
  52. object(V8Object)#3 (3) {
  53. ["0"]=>
  54. string(1) "0"
  55. ["1"]=>
  56. string(1) "1"
  57. ["2"]=>
  58. string(1) "2"
  59. }
  60. object(V8Object)#3 (3) {
  61. ["0"]=>
  62. string(3) "foo"
  63. ["1"]=>
  64. string(3) "bar"
  65. ["2"]=>
  66. string(3) "baz"
  67. }
  68. object(V8Object)#3 (3) {
  69. ["foo"]=>
  70. string(1) "0"
  71. ["bar"]=>
  72. string(1) "1"
  73. ["baz"]=>
  74. string(1) "2"
  75. }
  76. object(V8Object)#3 (3) {
  77. ["0"]=>
  78. string(1) "0"
  79. ["2"]=>
  80. string(1) "2"
  81. ["3"]=>
  82. string(1) "3"
  83. }
  84. object(V8Object)#3 (3) {
  85. ["0"]=>
  86. string(1) "0"
  87. ["2"]=>
  88. string(1) "2"
  89. ["bar"]=>
  90. string(1) "1"
  91. }
  92. ===EOF===