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 中成为关联数组。

目录

添加注释

用户贡献的注释 4 个注释

mateusz dot charytoniuk at gmail dot com
11 年前
此扩展可用于通过在两个地方执行相同的 JavaScript 代码来提供服务器端和客户端表单验证。
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)
mateusz dot charytoniuk at gmail dot com
8 年前
v8js 也可用于渲染服务器端 JavaScript 组件(参见:React.js)。
stamster at gmail dot com
7 年前
请注意,仅仅实例化 V8 类/二进制文件 .so 就会至少将您的应用程序/脚本运行时增加 5 毫秒。

来自 LAN 的测试(最小网络延迟)

PHP 7.0.x 不实例化 V8JS 类:1 毫秒
PHP 7.0.x 带有 V8JS 对象:6-7 毫秒

运行 V8 引擎 v5.8.0

这不是什么大问题,但与 PhalconPHP 框架相比,PhalconPHP 框架在运行时几乎没有额外延迟,而 V8JS 则增加了 5-6 倍的延迟/开销。
To Top