【问题标题】:What are Extensions in php v8js?php v8js 中的扩展是什么?
【发布时间】:2012-02-19 21:08:57
【问题描述】:

我已经开始使用 v8js 和 php 有一段时间了,但是文档真的很薄。

没有解释的一件事是扩展

可以registerExtension,但没有详细解释它们的行为方式或它们的目的或好处。

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

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

【问题讨论】:

    标签: php javascript v8 pecl


    【解决方案1】:

    原答案

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

    正确答案

    扩展是在给定 V8Js 实例的第一次 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"); }');
    

    输出

    嘿,来自非全局扩展!来自常规代码的你好!扩展已经打招呼了

    【讨论】:

    • 感谢您的回答!我尝试了这些例子。在全局示例中它只执行一次,所有后续对 executeString 的调用都没有再次执行扩展代码。
    • 谢谢,你是对的。我已经更新了我的答案以反映这一点:)
    猜你喜欢
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2016-10-20
    • 2017-01-19
    • 2013-12-31
    • 2010-09-29
    相关资源
    最近更新 更多