V8Js::registerExtension

(PECL v8js >= 0.1.0)

V8Js::registerExtension为 V8Js 注册 Javascript 扩展

说明

public static V8Js::registerExtension(
    string $extension_name,
    string $script,
    array $dependencies = array(),
    bool $auto_enable = false
): bool

将传递的 Javascript script 注册为要在 V8Js 上下文中使用的扩展。

参数

extension_name

要注册的扩展的名称。

script

要注册的 Javascript 代码。

dependencies

要注册的扩展所依赖的扩展名称数组。当加载此扩展时,任何此类扩展都会自动启用。

注意:

所有扩展,包括依赖项,都必须在创建任何使用它们的 V8Js 之前注册。

auto_enable

如果设置为 true,则扩展将在所有 V8Js 上下文中自动启用。

返回值

如果扩展注册成功,则返回 true,否则返回 false

添加注释

用户贡献的注释 2 个注释

7
dimarikson at yandex dot ru
9 年前
用法示例

if (V8Js::registerExtension('myjs', 'var x = 1 + 1;', array(), true) === false) {
exit("Failed to register js extension script");
}

$v8js = new V8Js;

$jsExec = <<<EOD
x;
EOD;

echo $v8js->executeString($jsExec)."\n"; // 打印 "2"
4
Reforced
5 年前
请注意,从 2.0.0 版开始,V8Js::registerExtension 已被弃用,建议改用快照 https://github.com/phpv8/v8js/releases/tag/2.0.0
使用快照和 moment.js 的简单示例

<?php
$script
= file_get_contents('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js');

$snapshot = V8Js::createSnapshot($script);
$v8 = new V8Js('php', array(), array(), true, $snapshot);

echo
$v8->executeString('moment().format()');
?>

旁注:如果您重视速度、安全性和稳定性,请勿在生产服务器上使用 file_get_contents 来获取外部 Javascript。
To Top