2024年PHP日本大会

V8Js::registerExtension

(PECL v8js >= 0.1.0)

V8Js::registerExtension注册V8Js的Javascript扩展

描述

public static V8Js::registerExtension(
    字符串 $extension_name,
    字符串 $script,
    数组 $dependencies = array(),
    布尔值 $auto_enable = false
): 布尔值

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

参数

extension_name

要注册的扩展的名称。

script

要注册的Javascript代码。

dependencies

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

注意:

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

auto_enable

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

返回值

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

添加注释

用户贡献的注释 2条注释

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

if (V8Js::registerExtension('myjs', 'var x = 1 + 1;', array(), true) === false) {
exit("注册js扩展脚本失败");
}

$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