什么是PHP v8js中的扩展?

fav*_*avo 7 javascript php v8 pecl

我已经开始在php上使用v8js了一段时间,但文档很薄.

没有解释的一件事是Extensions.

注册扩展是可能的,但没有详细解释这些行为或其目的或好处的行为.

任何人都可以提供一个很好的描述或链接到解释扩展的文档?

感谢大家花时间阅读和回答:-)

wma*_*but 5

原始答案

我的原始答案表明每次都会调用扩展名executeString.

更正了答案

扩展是在executeString给定V8Js实例的第一次调用之前执行的一些代码.扩展可以是所有V8J实例的全局实例,也可以是特定实例的本地实例.

我已经通过实验确定这并不总是非常可靠.如果您疯狂地刷新页面,您可能并不总是看到扩展程序运行...这可能是为什么这是beta版软件.

这是我掀起的两个例子

全局扩展示例

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"); }');
Run Code Online (Sandbox Code Playgroud)

产量

嘿扩展!你好,从常规代码!扩展已经说过嗨

非全球范例

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"); }');
Run Code Online (Sandbox Code Playgroud)

产量

嘿,来自非全球扩展!你好,从常规代码!扩展已经说过嗨