Updated all dependencies and prepared for PHP 8
This commit is contained in:
@@ -8,7 +8,7 @@ namespace CloudObjects\PhpMAE\Sandbox;
|
||||
|
||||
use PHPSandbox\PHPSandbox, PHPSandbox\SandboxWhitelistVisitor,
|
||||
PHPSandbox\Error;
|
||||
use PhpParser\NodeTraverser, PhpParser\ParserFactory;
|
||||
use PhpParser\NodeTraverser, PhpParser\PhpVersion, PhpParser\ParserFactory;
|
||||
use PhpParser\PrettyPrinter\Standard;
|
||||
use PhpParser\Error as ParserError;
|
||||
|
||||
@@ -38,10 +38,10 @@ class CustomizedSandbox extends PHPSandbox {
|
||||
]);
|
||||
}
|
||||
|
||||
public function validate($code) {
|
||||
public function validate($code) : self {
|
||||
$this->preparsed_code = $this->disassemble($code);
|
||||
$factory = new ParserFactory;
|
||||
$parser = $factory->create(ParserFactory::PREFER_PHP7);
|
||||
$parser = $factory->createForVersion(PhpVersion::getHostVersion());
|
||||
try {
|
||||
$this->parsed_ast = $parser->parse($this->preparsed_code);
|
||||
} catch (ParserError $error) {
|
||||
@@ -55,13 +55,11 @@ class CustomizedSandbox extends PHPSandbox {
|
||||
($this->allow_traits && $this->auto_whitelist_traits) ||
|
||||
($this->allow_globals && $this->auto_whitelist_globals)){
|
||||
$traverser = new NodeTraverser;
|
||||
$whitelister = new SandboxWhitelistVisitor($this);
|
||||
$traverser->addVisitor($whitelister);
|
||||
$traverser->addVisitor(new SandboxWhitelistVisitor($this));
|
||||
$traverser->traverse($this->parsed_ast);
|
||||
}
|
||||
$traverser = new NodeTraverser;
|
||||
$validator = new CustomizedValidatorVisitor($this);
|
||||
$traverser->addVisitor($validator);
|
||||
$traverser->addVisitor(new CustomizedValidatorVisitor($this));
|
||||
$this->prepared_ast = $traverser->traverse($this->parsed_ast);
|
||||
$this->prepared_code = $prettyPrinter->prettyPrint($this->prepared_ast);
|
||||
return $this;
|
||||
|
||||
Reference in New Issue
Block a user