V8Js::registerExtension

(PECL v8js >= 0.1.0)

V8Js::registerExtensionRegistra extensiones Javascript para V8Js

Descripción

public static V8Js::registerExtension(
    string $extension_name,
    string $script,
    array $dependencies = array(),
    bool $auto_enable = false
): bool

Registra el código Javascript pasado por el argumento script como extensión para ser utilizada en los contextos V8Js.

Parámetros

extension_name

Nombre de la extensión a registrar.

script

El código Javascript a registrar.

dependencies

Un array de nombres de extensiones de las que depende la extensión que se está registrando. Cada una de ellas será activada automáticamente al cargar esta extensión.

Nota:

Todas las extensiones, incluyendo las dependencias, deben ser registradas antes de la creación de cualquier objeto V8Js que las utilice.

auto_enable

Si se establece en true, la extensión será activada automáticamente en todos los contextos V8Js.

Valores devueltos

Devuelve true si la extensión se ha registrado con éxito, false en caso contrario.

add a note

User Contributed Notes 2 notes

up
7
dimarikson at yandex dot ru
10 years ago
Usage sample:

if (V8Js::registerExtension('myjs', 'var x = 1 + 1;', array(), true) === false) {
exit("Failed to register js extension script");
}

$v8js = new V8Js;

$jsExec = <<<EOD
x;
EOD;

echo $v8js->executeString($jsExec)."\n"; // print "2"
up
4
Reforced
5 years ago
Note that since version 2.0.0 V8Js::registerExtension is deprecated and suggests use snapshots instead https://github.com/phpv8/v8js/releases/tag/2.0.0
Simple example using snapshots and the 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()');
?>

Side-note: If you value speed, security and stability do not use file_get_contents to grab external javascripts on production servers.
To Top