略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: V8Js

2024-11-14

The V8Js class

(PECL v8js >= 0.1.0)

简介

This is the core class for V8Js extension. Each instance created from this class has own context in which all JavaScript is compiled and executed.

See V8Js::__construct() for more information.

类摘要

class V8Js {
/* Constants */
const string V8_VERSION;
const int FLAG_NONE = 1;
const int FLAG_FORCE_ARRAY = 2;
/* Methods */
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

The V8 Javascript Engine version.

V8Js::FLAG_NONE

No flags.

V8Js::FLAG_FORCE_ARRAY

Forces all JS objects to be associative arrays in PHP.

目录

add a noteadd a note

User Contributed Notes 4 notes

up
23
mateusz dot charytoniuk at gmail dot com
8 years ago
This extension can be used to provide server-side and client-side form validation by executing the same JavaScript code at both places.
up
4
Hoffmann dot P-no-sp at m-gmx dot net
5 years ago
You can use function variables (jay!)

So the following works:

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

yields indeed:
int(3)
up
4
mateusz dot charytoniuk at gmail dot com
6 years ago
v8js can be also used to render server-side javascript components (see: React.js).
up
-7
stamster at gmail dot com
5 years ago
Take note that just instantiating V8 class / binary .so will add at least 5ms to your app/script runtime.

Test from LAN (minimum network latency):

PHP 7.0.x w/o instantiating V8JS class: 1ms
PHP 7.0.x with V8JS object: 6-7ms

Running V8 engine v5.8.0

It's not a big deal, but comparing to PhalconPHP framework which adds almost 0 additional latency at runtime, V8JS adds 5-6 times more of latency/overhead.

官方地址:https://www.php.net/manual/en/class.v8js.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3