Что такое расширения в php v8js? - PullRequest
7 голосов
/ 26 января 2012

Я уже некоторое время начал использовать v8js с php, но документация очень скудная.

Одна вещь, которая не объясняется, это Расширения .

можно registerExtension , но подробно не объясняется, как они ведут себя, каковы их цели или преимущества.

Может ли кто-нибудь предоставить хорошее описание или ссылку на документацию, объясняющую расширения?

Спасибо всем, что нашли время, чтобы прочитать и ответить: -)

1 Ответ

5 голосов
/ 31 мая 2012

Оригинальный ответ

В моем первоначальном ответе указывалось, что добавочный номер вызывается каждый раз executeString.

Исправленный ответ

Расширение - это бит кода, который выполняется перед первым вызовом executeString для данного экземпляра V8J.Расширение может быть глобальным для всех экземпляров V8J или локальным для конкретного экземпляра.

Я экспериментально определил, что это не всегда очень надежно.Если вы лихорадочно обновляете страницу, вы можете не всегда запускать расширение ... Возможно, именно поэтому это программное обеспечение бета-качества.

Вот два примера, которые я набрал

GlobalПример расширения

Код

V8Js::registerExtension('say_hi', 'print("hey from extension! "); var said_hi=true;', array(), true);
$v8 = new V8Js();
$v8->executeString('print("hello from regular code!")', 'test.php');
$v8->executeString('if (said_hi) { print(" extension already said hi"); }');

Выход

эй от расширения!привет из обычного кода!расширение уже говорит: привет

Неглобальный пример

Код

V8Js::registerExtension('say_hi', 'print("hey from non global extension! "); var said_hi=true;');
$v8 = new V8Js('PHP', array(), array('say_hi'));
$v8->executeString('print("hello from regular code!");', 'test.php');
$v8->executeString('if (said_hi) { print(" extension already said hi"); }');

Выход

эй от не глобального расширения!привет из обычного кода!расширение уже сказал привет

...