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"
(PECL v8js >= 0.1.0)
V8Js::registerExtension — Registriert JavaScript-Erweiterungen für V8Js
$extension_name
,$script
,$dependencies
= array(),$auto_enable
= false
Registriert das JavaScript script
als Erweiterung,
die in V8Js-Kontexten benutzt werden soll.
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.
Gibt bei Erfolg true
zurück, ansonsten false
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"
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.