123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- --TEST--
- Test V8::executeString() : Test PHP object construction controlled by JavaScript (protected ctor)
- --SKIPIF--
- <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
- --FILE--
- <?php
- $v8 = new V8Js();
- class Greeter {
- protected $_name = null;
- protected function __construct($name) {
- echo "ctor called (php)\n";
- $this->_name = $name;
- }
- static function getInstance($name) {
- return new Greeter($name);
- }
- function sayHello() {
- echo "Hello ".$this->_name."\n";
- }
- }
- $v8->greeter = Greeter::getInstance("John");
- try {
- $v8->executeString('
- PHP.greeter.sayHello();
- var ngGreeter = new PHP.greeter.constructor("Ringo");
- ngGreeter.sayHello();
- ', 'ctor-test');
- } catch(V8JsScriptException $e) {
- echo "caught js exception\n";
- var_dump($e);
- }
- ?>
- ===EOF===
- --EXPECTF--
- ctor called (php)
- Hello John
- caught js exception
- object(V8JsScriptException)#%d (11) {
- ["message":protected]=>
- string(56) "ctor-test:4: Call to protected __construct() not allowed"
- ["string":"Exception":private]=>
- string(0) ""
- ["code":protected]=>
- int(0)
- ["file":protected]=>
- string(%d) "%s"
- ["line":protected]=>
- int(29)
- ["trace":"Exception":private]=>
- array(1) {
- [0]=>
- array(6) {
- ["file"]=>
- string(%d) "%s"
- ["line"]=>
- int(29)
- ["function"]=>
- string(13) "executeString"
- ["class"]=>
- string(4) "V8Js"
- ["type"]=>
- string(2) "->"
- ["args"]=>
- array(2) {
- [0]=>
- string(109) "
- PHP.greeter.sayHello();
- var ngGreeter = new PHP.greeter.constructor("Ringo");
- ngGreeter.sayHello();
- "
- [1]=>
- string(9) "ctor-test"
- }
- }
- }
- ["previous":"Exception":private]=>
- NULL
- ["JsFileName":protected]=>
- string(9) "ctor-test"
- ["JsLineNumber":protected]=>
- int(4)
- ["JsSourceLine":protected]=>
- string(55) " var ngGreeter = new PHP.greeter.constructor("Ringo");"
- ["JsTrace":protected]=>
- NULL
- }
- ===EOF===
|