2024年PHP日本大会

V8Js

(PECL v8js >= 0.1.0)

简介

这是V8Js扩展的核心类。从该类创建的每个实例都有自己的上下文,其中编译和执行所有JavaScript。

参见 V8Js::__construct() 获取更多信息。

类概要

class V8Js {
/* 常量 */
const int FLAG_NONE = 1;
/* 方法 */
public __construct(
    string $object_name = "PHP",
    array $variables = array(),
    array $extensions = array(),
    bool $report_uncaught_exceptions = true
)
public executeString(string $script, string $identifier = "V8Js::executeString()", int $flags = V8Js::FLAG_NONE): mixed
public static getExtensions(): array
public static registerExtension(
    string $extension_name,
    string $script,
    array $dependencies = array(),
    bool $auto_enable = false
): bool
}

预定义常量

V8Js::V8_VERSION

V8 Javascript引擎版本。

V8Js::FLAG_NONE

无标志。

V8Js::FLAG_FORCE_ARRAY

强制所有JS对象在PHP中为关联数组。

目录

添加注释

用户贡献注释 3条注释

24
mateusz dot charytoniuk at gmail dot com
11年前
此扩展可用于通过在两处执行相同的JavaScript代码来提供服务器端和客户端表单验证。
5
Hoffmann dot P-no-sp at m-gmx dot net
7年前
您可以使用函数变量(jay!)

所以以下代码有效

$add = function ($a, $b) {
return $a + $b;
};
$v8 = new V8Js('PHP', array('add' => 'add'));
$result = $v8->executeString('PHP.add(1,2)');
var_dump($result);

确实产生
int(3)
4
mateusz dot charytoniuk at gmail dot com
9年前
v8js也可用于渲染服务器端javascript组件(参见:React.js)。
To Top