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 引擎版本。

V8Js::FLAG_NONE

無旗標。

V8Js::FLAG_FORCE_ARRAY

強制所有 JS 物件在 PHP 中成為關聯式陣列。

目錄

新增註解

使用者貢獻的註解 3 則註解

mateusz dot charytoniuk at gmail dot com
11 年前
此擴充功能可藉由在伺服器端和客戶端執行相同的 JavaScript 程式碼來提供表單驗證。
Hoffmann dot P-no-sp at m-gmx dot net
7 年前
您可以使用函數變數(太棒了!)

所以以下程式碼可以運作

$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
9 年前
v8js 也可用於渲染伺服器端的 JavaScript 元件(例如:React.js)。
To Top