class V8Js (View source)

Constants

V8_VERSION

FLAG_NONE

FLAG_FORCE_ARRAY

FLAG_PROPAGATE_PHP_EXCEPTIONS

Methods

__construct(string $object_name = "PHP", array $variables = [], array $extensions = [], bool $report_uncaught_exceptions = true, string $snapshot_blob = null)

Initializes and starts V8 engine and returns new V8Js object with it's own V8 context.

setModuleLoader(callable $loader)

Provide a function or method to be used to load required modules. This can be any valid PHP callable.

setModuleNormaliser(callable $normaliser)

Provide a function or method to be used to normalise module paths. This can be any valid PHP callable.

mixed
executeString(string $script, string $identifier = '', int $flags = V8Js::FLAG_NONE, int $time_limit = 0, int $memory_limit = 0)

Compiles and executes script in object's context with optional identifier string.

resource
compileString(mixed $script, string $identifier = '')

Compiles a script in object's context with optional identifier string.

executeScript(resource $script, int $flags = V8Js::FLAG_NONE, int $time_limit = 0, int $memory_limit = 0)

Executes a precompiled script in object's context.

setTimeLimit(int $limit)

Set the time limit (in milliseconds) for this V8Js object works similar to the set_time_limit php

setMemoryLimit(int $limit)

Set the memory limit (in bytes) for this V8Js object

setAverageObjectSize(int $average_object_size)

Set the average object size (in bytes) for this V8Js object.

getPendingException()

Returns uncaught pending exception or null if there is no pending exception.

clearPendingException()

Clears the uncaught pending exception

static bool
registerExtension(string $extension_name, string $code, array $dependencies = [], bool $auto_enable = false)

Registers persistent context independent global Javascript extension.

static string[]
getExtensions()

Returns extensions successfully registered with V8Js::registerExtension().

static string|false
createSnapshot(string $embed_source)

Creates a custom V8 heap snapshot with the provided JavaScript source embedded.

Details

__construct(string $object_name = "PHP", array $variables = [], array $extensions = [], bool $report_uncaught_exceptions = true, string $snapshot_blob = null)

Initializes and starts V8 engine and returns new V8Js object with it's own V8 context.

Snapshots are supported by V8 4.3.7 and higher.

Parameters

string $object_name

The name of the object passed to Javascript.

array $variables

Map of PHP variables that will be available in Javascript. Must be an associative array in format array("name-for-js" => "name-of-php-variable"). Defaults to empty array.

array $extensions

List of extensions registered using V8Js::registerExtension which should be available in the Javascript context of the created V8Js object. Extensions registered to be enabled automatically do not need to be listed in this array. Also if an extension has dependencies, those dependencies can be omitted as well. Defaults to empty array.

bool $report_uncaught_exceptions

Controls whether uncaught Javascript exceptions are reported immediately or not. Defaults to true. If set to false the uncaught exception can be accessed using V8Js::getPendingException.

string $snapshot_blob

setModuleLoader(callable $loader)

Provide a function or method to be used to load required modules. This can be any valid PHP callable.

The loader function will receive the normalised module path and should return Javascript code to be executed.

Parameters

callable $loader

setModuleNormaliser(callable $normaliser)

Provide a function or method to be used to normalise module paths. This can be any valid PHP callable.

This can be used in combination with setModuleLoader to influence normalisation of the module path (which is normally done by V8Js itself but can be overriden this way). The normaliser function will receive the base path of the current module (if any; otherwise an empty string) and the literate string provided to the require method and should return an array of two strings (the new module base path as well as the normalised name). Both are joined by a '/' and then passed on to the module loader (unless the module was cached before).

Parameters

callable $normaliser

mixed executeString(string $script, string $identifier = '', int $flags = V8Js::FLAG_NONE, int $time_limit = 0, int $memory_limit = 0)

Compiles and executes script in object's context with optional identifier string.

A time limit (milliseconds) and/or memory limit (bytes) can be provided to restrict execution. These options will throw a V8JsTimeLimitException or V8JsMemoryLimitException.

Parameters

string $script

The code string to be executed.

string $identifier

Identifier string for the executed code. Used for debugging.

int $flags

Execution flags. This value must be one of the V8Js::FLAG_* constants, defaulting to V8Js::FLAG_NONE. V8Js::FLAG_NONE: no flags V8Js::FLAG_FORCE_ARRAY: forces all Javascript objects passed to PHP to be associative arrays

int $time_limit

in milliseconds

int $memory_limit

in bytes

Return Value

mixed

Returns the last variable instantiated in the Javascript code converted to matching PHP variable type.

resource compileString(mixed $script, string $identifier = '')

Compiles a script in object's context with optional identifier string.

Parameters

mixed $script
string $identifier

Return Value

resource

executeScript(resource $script, int $flags = V8Js::FLAG_NONE, int $time_limit = 0, int $memory_limit = 0)

Executes a precompiled script in object's context.

A time limit (milliseconds) and/or memory limit (bytes) can be provided to restrict execution. These options will throw a V8JsTimeLimitException or V8JsMemoryLimitException.

Parameters

resource $script
int $flags
int $time_limit
int $memory_limit

setTimeLimit(int $limit)

Set the time limit (in milliseconds) for this V8Js object works similar to the set_time_limit php

Parameters

int $limit

setMemoryLimit(int $limit)

Set the memory limit (in bytes) for this V8Js object

Parameters

int $limit

setAverageObjectSize(int $average_object_size)

Set the average object size (in bytes) for this V8Js object.

V8's "amount of external memory" is adjusted by this value for every exported object. V8 triggers a garbage collection once this totals to 192 MB.

Parameters

int $average_object_size

V8JsScriptException|null getPendingException()

Returns uncaught pending exception or null if there is no pending exception.

Return Value

V8JsScriptException|null

Either V8JsException or null.

clearPendingException()

Clears the uncaught pending exception

static bool registerExtension(string $extension_name, string $code, array $dependencies = [], bool $auto_enable = false)

Registers persistent context independent global Javascript extension.

NOTE! These extensions exist until PHP is shutdown and they need to be registered before V8 is initialized. For best performance V8 is initialized only once per process thus this call has to be done before any V8Js objects are created!

Parameters

string $extension_name

Name of the extension to be registered.

string $code
array $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.

bool $auto_enable

If set to true, the extension will be enabled automatically in all V8Js contexts.

Return Value

bool

Returns true if extension was registered successfully, false otherwise.

static string[] getExtensions()

Returns extensions successfully registered with V8Js::registerExtension().

Return Value

string[]

Returns an array of registered extensions or an empty array if there are none.

static string|false createSnapshot(string $embed_source)

Creates a custom V8 heap snapshot with the provided JavaScript source embedded.

Snapshots are supported by V8 4.3.7 and higher. For older versions of V8 this extension doesn't provide this method.

Parameters

string $embed_source

Return Value

string|false