php v8js中的扩展是什么



我已经开始在php中使用v8js有一段时间了,但文档非常精简。

有一件事没有解释,那就是扩展

可以注册Extension,但没有详细解释它们的行为方式或用途或好处。

有人能提供一个很好的描述或链接到解释扩展的文档吗?

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

原始答案

我最初的回答表明,每次调用executeString时都会调用扩展。

更正的答案

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

我已经通过实验确定,这并不总是很可靠。如果你疯狂地刷新页面,你可能不会总是看到扩展运行。。。这可能就是为什么这是测试版质量的软件。

以下是我创建的两个例子

全局扩展示例

代码

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"); }');

输出

嘿,来自非全局扩展!来自常规代码的你好!分机已经说嗨

相关内容

  • 没有找到相关文章

最新更新