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就不报错了。
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。