js-construct-with-ctor.phpt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. Test V8::executeString() : Test PHP object construction controlled by JavaScript (with ctor)
  3. --SKIPIF--
  4. <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
  5. --FILE--
  6. <?php
  7. $v8 = new V8Js();
  8. class Greeter {
  9. protected $_name = null;
  10. function __construct($name) {
  11. echo "ctor called (php)\n";
  12. $this->_name = $name;
  13. }
  14. function sayHello() {
  15. echo "Hello ".$this->_name."\n";
  16. }
  17. }
  18. $v8->greeter = new Greeter("John");
  19. $v8->executeString('
  20. function JsGreeter(name) {
  21. print("ctor called (js)\n");
  22. this.name = name;
  23. };
  24. JsGreeter.prototype.sayHello = function() {
  25. print("Hello " + this.name + "\n");
  26. };
  27. jsGreeter = new JsGreeter("Paul");
  28. jsGreeter.sayHello();
  29. jsGreeterNg = new jsGreeter.constructor("George");
  30. jsGreeterNg.sayHello();
  31. // ----- now the same using v8Js -----
  32. PHP.greeter.sayHello();
  33. var ngGreeter = new PHP.greeter.constructor("Ringo");
  34. ngGreeter.sayHello();
  35. ');
  36. ?>
  37. ===EOF===
  38. --EXPECT--
  39. ctor called (php)
  40. ctor called (js)
  41. Hello Paul
  42. ctor called (js)
  43. Hello George
  44. Hello John
  45. ctor called (php)
  46. Hello Ringo
  47. ===EOF===