Projeto experimental para interpretar um subconjunto de JavaScript usando PHP. Não implementa a especificação completa do ECMAScript.
<?php
require __DIR__ . '/vendor/autoload.php';
use PhpEcmascript\Engine;
$engine = new Engine();
$result = $engine->run(<<<'JS'
let total = 0;
for (let i = 1; i <= limit; i++) {
total += i;
}
`Total: ${total}`
JS, ['limit' => 4]);
echo $result; // Total: 10$engine = new Engine();
$engine->with(['price' => 10]);
$total = $engine->run('price * quantity', ['quantity' => 3]);Suporte atual:
- literais de número, string, booleano,
null, template string e array; - declarações
let,constevar, inclusive desestruturação de arrays; - operadores aritméticos, lógicos, relacionais, bit a bit e de atribuição;
- blocos,
if/else,switch,while,do...while,forebreak; - spread em arrays e valores fornecidos pelo PHP.
Pendente:
- funções, classes, módulos, objetos literais, chamadas de métodos.