issue_349_basic.phpt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. --TEST--
  2. Test V8Js::setModuleNormaliser : Custom normalisation #005
  3. --SKIPIF--
  4. <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
  5. --FILE--
  6. <?php
  7. $v8 = new V8Js();
  8. $v8->setModuleNormaliser(function ($base, $moduleName) {
  9. var_dump($base, $moduleName);
  10. if ($base == '' && $moduleName == './tags') {
  11. return ['./tags', 'index.js'];
  12. }
  13. if ($base == './tags' && $moduleName == './if.js') {
  14. return ['./tags', 'if.js'];
  15. }
  16. return [$base, $moduleName];
  17. });
  18. $v8->setModuleLoader(function ($moduleName) {
  19. print("setModuleLoader called for ".$moduleName."\n");
  20. switch ($moduleName) {
  21. case './app.js':
  22. return "require('./tags')";
  23. case './tags/index.js':
  24. return "require('./if.js')";
  25. }
  26. });
  27. $v8->executeString("require('./app.js')");
  28. echo "------------------------------------------------\n";
  29. $v8 = new V8Js();
  30. $v8->setModuleNormaliser(function ($base, $moduleName) {
  31. var_dump($base, $moduleName);
  32. if ($base == '' && $moduleName == './tags') {
  33. return ['./tags', 'index.js'];
  34. }
  35. if ($base == './tags' && $moduleName == './if.js') {
  36. return ['./tags', 'if.js'];
  37. }
  38. return [$base, $moduleName];
  39. });
  40. $v8->setModuleLoader(function ($moduleName) {
  41. print("setModuleLoader called for ".$moduleName."\n");
  42. switch ($moduleName) {
  43. case './app.js':
  44. return "require('./tags')()"; // different
  45. case './tags/index.js':
  46. return "module.exports = function() {require('./if.js')}"; // different
  47. }
  48. });
  49. $v8->executeString("require('./app.js')");
  50. ?>
  51. ===EOF===
  52. --EXPECT--
  53. string(0) ""
  54. string(8) "./app.js"
  55. setModuleLoader called for ./app.js
  56. string(0) ""
  57. string(6) "./tags"
  58. setModuleLoader called for ./tags/index.js
  59. string(6) "./tags"
  60. string(7) "./if.js"
  61. setModuleLoader called for ./tags/if.js
  62. ------------------------------------------------
  63. string(0) ""
  64. string(8) "./app.js"
  65. setModuleLoader called for ./app.js
  66. string(0) ""
  67. string(6) "./tags"
  68. setModuleLoader called for ./tags/index.js
  69. string(6) "./tags"
  70. string(7) "./if.js"
  71. setModuleLoader called for ./tags/if.js
  72. ===EOF===