什么是PHP v8js中的扩展?

时间:2012-01-26 19:07:25

标签: php javascript v8 pecl

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

未解释的一件事是 Extensions

有可能registerExtension,但没有详细解释这些行为或其目的或利益的行为。

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

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

1 个答案:

答案 0 :(得分:5)

原始答案

我的原始答案表明每次executeString时都会调用扩展程序。

更正了答案

扩展名是在给定V8Js实例的第一次executeString调用之前执行的一些代码。 扩展可以是所有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"); }');

<强>输出

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

非全球范例

<强>代码

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

<强>输出

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