Оригинальный ответ
В моем первоначальном ответе указывалось, что добавочный номер вызывается каждый раз 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"); }');
Выход
эй от не глобального расширения!привет из обычного кода!расширение уже сказал привет