此扩展可用于通过在两个地方执行相同的 JavaScript 代码来提供服务器端和客户端表单验证。
(PECL v8js >= 0.1.0)
$object_name
= "PHP",$variables
= array(),$extensions
= array(),$report_uncaught_exceptions
= true
$script
, string $identifier
= "V8Js::executeString()", int $flags
= V8Js::FLAG_NONE
): mixedV8Js::V8_VERSION
V8 Javascript 引擎版本。
V8Js::FLAG_NONE
无标志。
V8Js::FLAG_FORCE_ARRAY
强制所有 JS 对象在 PHP 中成为关联数组。
您可以使用函数变量(jay!)
因此以下代码有效
$add = function ($a, $b) {
return $a + $b;
};
$v8 = new V8Js('PHP', array('add' => 'add'));
$result = $v8->executeString('PHP.add(1,2)');
var_dump($result);
确实会生成
int(3)
请注意,仅仅实例化 V8 类/二进制文件 .so 就会至少将您的应用程序/脚本运行时增加 5 毫秒。
来自 LAN 的测试(最小网络延迟)
PHP 7.0.x 不实例化 V8JS 类:1 毫秒
PHP 7.0.x 带有 V8JS 对象:6-7 毫秒
运行 V8 引擎 v5.8.0
这不是什么大问题,但与 PhalconPHP 框架相比,PhalconPHP 框架在运行时几乎没有额外延迟,而 V8JS 则增加了 5-6 倍的延迟/开销。