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($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
array $variables
array $extensions
bool $report_uncaught_exceptions
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
string $identifier
int $flags
int $time_limit

in milliseconds

int $memory_limit

in bytes

Return Value

mixed

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

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

Parameters

$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

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
string $code
array $dependencies
bool $auto_enable

Return Value

bool

static string[] getExtensions()

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

Return Value

string[]

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