test_dumper.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. class Foo {
  3. var $foo = 'bar';
  4. var $true = true;
  5. var $false = false;
  6. var $bar = array(1,2,3,1.23456789);
  7. var $ass = array("life" => 42, "foo" => "bar");
  8. function __set($name, $value)
  9. {
  10. echo "I'm setter!\n";
  11. var_dump($name, $value);
  12. }
  13. function __get($name)
  14. {
  15. echo "I'm getter!\n";
  16. var_dump($name);
  17. }
  18. function __call($name, $args)
  19. {
  20. echo "I'm caller!\n";
  21. var_dump($name, $args);
  22. }
  23. }
  24. $a = new V8Js();
  25. $obj = new Foo;
  26. $a->arr = array("foobar" => $obj);
  27. $JS = <<< 'EOF'
  28. var example = new Object;
  29. example.foo = function () {
  30. print("this is foo");
  31. }
  32. example.bar = function () {
  33. print("this is bar");
  34. }
  35. example.__noSuchMethod__ = function (id, args) {
  36. print("tried to handle unknown method " + id);
  37. if (args.length != 0)
  38. print("it had arguments: " + args);
  39. }
  40. example.foo(); // alerts "this is foo"
  41. example.bar(); // alerts "this is bar"
  42. example.grill(); // alerts "tried to handle unknown method grill"
  43. example.ding("dong"); // alerts "tried to handle unknown method ding"
  44. EOF;
  45. try {
  46. $a->executeString("var myarr = new Array(); myarr[0] = 'foo'; myarr[1] = 'bar'; var_dump(myarr); var_dump(new Date('September 8, 1975 09:00:00'))", "call_test1.js");
  47. $a->executeString("var_dump(PHP.arr.foobar.bar);", "call_test2.js");
  48. $a->executeString("var_dump(PHP.arr.foobar.bar[0]);", "call_test3.js");
  49. $a->executeString("var_dump(var_dump(PHP.arr));", "call_test4.js");
  50. $a->executeString("var patt1=/[^a-h]/g; var_dump(patt1);", "call_test5.js");
  51. $a->executeString("var_dump(Math.PI, Infinity, null, undefined);", "call_test6.js");
  52. // $a->executeString($JS);
  53. } catch (V8JsScriptException $e) {
  54. echo $e->getMessage(), "\n";
  55. }