PHP Conference Japan 2024

V8Js::registerExtension

(PECL v8js >= 0.1.0)

V8Js::registerExtension註冊 V8Js 的 Javascript 擴充

說明

public static V8Js::registerExtension(
    字串 $extension_name,
    字串 $script,
    陣列 $dependencies = array(),
    布林值 $auto_enable = false
): 布林值

將傳入的 Javascript script 註冊為擴充功能,以便在 V8Js 上下文中使用。

參數

extension_name

要註冊的擴充功能名稱。

script

要註冊的 Javascript 程式碼。

dependencies

要註冊的擴充功能所依賴的擴充功能名稱陣列。載入此擴充功能時,將自動啟用任何此類擴充功能。

注意事項:

所有擴充功能,包括依賴項,都必須在建立任何使用它們的 V8Js 之前註冊。

auto_enable

如果設為 true,則擴充功能將在所有 V8Js 上下文中自動啟用。

回傳值

如果擴充功能註冊成功,則返回 true,否則返回 false

新增註解

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

dimarikson at yandex dot ru
10 年前
使用範例

if (V8Js::registerExtension('myjs', 'var x = 1 + 1;', array(), true) === false) {
exit("註冊 js 擴充功能腳本失敗");
}

$v8js = new V8Js;

$jsExec = <<<EOD
x;
EOD;

echo $v8js->executeString($jsExec)."\n"; // 顯示 "2"
Reforced
5 年前
請注意,自 2.0.0 版起,V8Js::registerExtension 已被棄用,建議改用快照 https://github.com/phpv8/v8js/releases/tag/2.0.0
使用快照和 moment.js 的簡單範例

<?php
$script
= file_get_contents('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js');

$snapshot = V8Js::createSnapshot($script);
$v8 = new V8Js('php', array(), array(), true, $snapshot);

echo
$v8->executeString('moment().format()');
?>

旁註:如果您重視速度、安全性和穩定性,請勿在正式伺服器上使用 file_get_contents 來擷取外部 Javascript。
To Top