PHP Conference Japan 2024

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 Engine のバージョン。

V8Js::FLAG_NONE

何もフラグが立っていません。

V8Js::FLAG_FORCE_ARRAY

すべての JS オブジェクトを PHP の連想配列にします。

目次

add a note

User Contributed Notes 3 notes

up
24
mateusz dot charytoniuk at gmail dot com
11 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
5
Hoffmann dot P-no-sp at m-gmx dot net
7 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
9 years ago
v8js can be also used to render server-side javascript components (see: React.js).
To Top