php[world] 2019 — 25 years of PHP

V8Js::registerExtension

(PECL v8js >= 0.1.0)

V8Js::registerExtensionRegistriert JavaScript-Erweiterungen für V8Js

Beschreibung

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

Registriert das JavaScript script als Erweiterung, die in V8Js-Kontexten benutzt werden soll.

Parameter-Liste

extension_name

Name der Erweiterung, die registriert werden soll.

script

JavaScript-Code, der registriert werden soll.

dependencies

Array mit Namen von Erweiterungen, von denen diese Erweiterung abhängt. Jede solche Erweiterung ist automatisch aktiviert, wenn diese Erweiterung geladen wird.

Hinweis:

Alle Erweiterungen, inklusive der Abhängigkeiten, müssen registriert werden, bevor V8Js-Objekte instanziiert werden, die diese nutzen sollen.

auto_enable

Ist dieser Wert TRUE (Standard: FALSE), so wird die Erweiterung automatisch in allen V8Js-Kontexten aktiviert.

Rückgabewerte

Gibt bei Erfolg TRUE zurück, ansonsten FALSE

add a note add a note

User Contributed Notes 2 notes

up
5
dimarikson at yandex dot ru
4 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
0
Reforced
12 days 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