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"
PHP - Manual: V8Js::registerExtension
2024-11-13
(PECL v8js >= 0.1.0)
V8Js::registerExtension — Register Javascript extensions for V8Js
$extension_name
,$script
,$dependencies
= array(),$auto_enable
= false
Registers passed Javascript script
as extension to
be used in V8Js contexts.
extension_name
Name of the extension to be registered.
script
The Javascript code to be registered.
dependencies
Array of extension names the extension to be registered depends on. Any such extension is enabled automatically when this extension is loaded.
注意:
All extensions, including the dependencies, must be registered before any V8Js are created which use them.
auto_enable
If set to true
, the extension will be enabled automatically in all V8Js contexts.
Returns true
if extension was registered successfully, false
otherwise.
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.
官方地址:https://www.php.net/manual/en/v8js.registerextension.php