callbacks.phpt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --TEST--
  2. Test V8::executeString() : Call JS from PHP
  3. --SKIPIF--
  4. <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
  5. --FILE--
  6. <?php
  7. $a = new V8Js();
  8. // Should not work with closure
  9. $a->test = function ($params) { return (method_exists($params, 'cb1')) ? $params->cb1("hello") : false; };
  10. $ret = $a->executeString('PHP.test(function (foo) { return foo + " world"; });');
  11. var_dump(__LINE__, $ret);
  12. // Test is_a()
  13. $a->test = function ($params) { return (is_a($params, 'V8Object')) ? $params->cb1("hello") : false; };
  14. $ret = $a->executeString('PHP.test({ "cb1" : function (foo) { return foo + " world"; } });');
  15. var_dump(__LINE__, $ret);
  16. // Test is_a()
  17. $a->test = function ($params) { return (is_a($params, 'V8Function')) ? $params("hello") : false; };
  18. $ret = $a->executeString('PHP.test(function (foo) { return foo + " world"; });');
  19. var_dump(__LINE__, $ret);
  20. // Should not work with object
  21. $a->test = function ($params) { return (is_a($params, 'Closure')) ? $params("hello") : false; };
  22. $ret = $a->executeString('PHP.test({ "cb1" : function (foo) { return foo + " world"; } });');
  23. var_dump(__LINE__, $ret);
  24. // Works
  25. $a->test = function ($params) { return $params->cb1("hello"); };
  26. $ret = $a->executeString('PHP.test({ "cb1" : function (foo) { return foo + " world"; } });');
  27. var_dump(__LINE__, $ret);
  28. ?>
  29. ===EOF===
  30. --EXPECT--
  31. int(8)
  32. bool(false)
  33. int(13)
  34. string(11) "hello world"
  35. int(18)
  36. string(11) "hello world"
  37. int(23)
  38. bool(false)
  39. int(28)
  40. string(11) "hello world"
  41. ===EOF===