This extension can be used to provide server-side and client-side form validation by executing the same JavaScript code at both places.
PHP - Manual: V8Js
2024-12-22
(PECL v8js >= 0.1.0)
This is the core class for V8Js extension. Each instance created from this class has own context in which all JavaScript is compiled and executed.
See V8Js::__construct() for more information.
$object_name
= "PHP",$variables
= array(),$extensions
= array(),$report_uncaught_exceptions
= true
$script
, string $identifier
= "V8Js::executeString()", int $flags
= V8Js::FLAG_NONE
): mixed$extension_name
,$script
,$dependencies
= array(),$auto_enable
= false
V8Js::V8_VERSION
The V8 Javascript Engine version.
V8Js::FLAG_NONE
No flags.
V8Js::FLAG_FORCE_ARRAY
Forces all JS objects to be associative arrays in PHP.
This extension can be used to provide server-side and client-side form validation by executing the same JavaScript code at both places.
You can use function variables (jay!)
So the following works:
$add = function ($a, $b) {
return $a + $b;
};
$v8 = new V8Js('PHP', array('add' => 'add'));
$result = $v8->executeString('PHP.add(1,2)');
var_dump($result);
yields indeed:
int(3)
v8js can be also used to render server-side javascript components (see: React.js).
Take note that just instantiating V8 class / binary .so will add at least 5ms to your app/script runtime.
Test from LAN (minimum network latency):
PHP 7.0.x w/o instantiating V8JS class: 1ms
PHP 7.0.x with V8JS object: 6-7ms
Running V8 engine v5.8.0
It's not a big deal, but comparing to PhalconPHP framework which adds almost 0 additional latency at runtime, V8JS adds 5-6 times more of latency/overhead.