V8Js::registerExtension
(PECL v8js >= 0.1.0)
V8Js::registerExtension — Register Javascript extensions for V8Js
Описание
$extension_name
, string $script
[, array $dependencies
= array()
[, bool $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.
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Другие базовые расширения
- V8 Javascript Engine Integration
- Функция V8Js::__construct() - Construct a new V8Js object
- Функция V8Js::executeString() - Execute a string as Javascript code
- Функция V8Js::getExtensions() - Return an array of registered extensions
- Функция V8Js::getPendingException() - Return pending uncaught Javascript exception
- Функция V8Js::registerExtension() - Register Javascript extensions for V8Js
Коментарии
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.