首页 > 文章资讯 > 站长教程 > 建站知识 > Uncaught Error: Call to undefined method PhpParser\ParserFactory::create() in
Uncaught Error: Call to undefined method PhpParser\ParserFactory::create() in
时间:2024年04月16日
/来源:网络
/编辑:佚名
首先使用 composer 安装 php-parser
先来熟悉 php-parser 的 API
nikic/PHP-Parser 可以解析 PHP 代码并生成 AST,还支持修改 AST 再还原成PHP源码,从而实现元编程,可用来做 AOP 和静态代码检查等。Swoft 框架中 AOP 也是基于 PHP-parser 开发的。
https://github.com/nikic/PHP-Parser
composer require nikic/php-parser
安装完成后,执行命令以下命令
php format.php
出现提示:Uncaught Error: Call to undefined method PhpParser\ParserFactory::create() in
format.php文件如下:
<?php
use PhpParser\Error;
use PhpParser\ParserFactory;
use PhpParser\PrettyPrinter;
require 'vendor/autoload.php';
$code = file_get_contents('input.php');
$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
try {
$ast = $parser->parse($code);
} catch (Error $error) {
echo "Parse error: {$error->getMessage()}\n";
return;
}
$prettyPrinter = new PrettyPrinter\Standard;
$prettyCode = $prettyPrinter->prettyPrintFile($ast);
file_put_contents('output.php', $prettyCode);
?>
安装的是最新PHP-Parser 5.0.2,format.php代码用的是老版本,不兼容。
红色部分是PHP-Parser老版本调用方法,而最新版本PHP-Parser 5.0.2调用方法如下:
$parser = (new ParserFactory())->createForNewestSupportedVersion();
小编测试用了一下,要么用最新方法调用,要不换成老版本PHP-Parser-3.1.3就不报错了。
先来熟悉 php-parser 的 API
nikic/PHP-Parser 可以解析 PHP 代码并生成 AST,还支持修改 AST 再还原成PHP源码,从而实现元编程,可用来做 AOP 和静态代码检查等。Swoft 框架中 AOP 也是基于 PHP-parser 开发的。
https://github.com/nikic/PHP-Parser
composer require nikic/php-parser
安装完成后,执行命令以下命令
php format.php
出现提示:Uncaught Error: Call to undefined method PhpParser\ParserFactory::create() in
format.php文件如下:
<?php
use PhpParser\Error;
use PhpParser\ParserFactory;
use PhpParser\PrettyPrinter;
require 'vendor/autoload.php';
$code = file_get_contents('input.php');
$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
try {
$ast = $parser->parse($code);
} catch (Error $error) {
echo "Parse error: {$error->getMessage()}\n";
return;
}
$prettyPrinter = new PrettyPrinter\Standard;
$prettyCode = $prettyPrinter->prettyPrintFile($ast);
file_put_contents('output.php', $prettyCode);
?>
安装的是最新PHP-Parser 5.0.2,format.php代码用的是老版本,不兼容。
红色部分是PHP-Parser老版本调用方法,而最新版本PHP-Parser 5.0.2调用方法如下:
$parser = (new ParserFactory())->createForNewestSupportedVersion();
小编测试用了一下,要么用最新方法调用,要不换成老版本PHP-Parser-3.1.3就不报错了。
新闻资讯 更多