我想知道它是否存在用于 php-parser 的漂亮打印机,它能够强制执行所需的最大行长度?
(对于一些基本情况(数组元素列表、函数参数列表),实现起来似乎相当简单,但它开始对变量表达式等感到困惑。)
我想知道它是否存在用于 php-parser 的漂亮打印机,它能够强制执行所需的最大行长度?
(对于一些基本情况(数组元素列表、函数参数列表),实现起来似乎相当简单,但它开始对变量表达式等感到困惑。)
据我所知,没有现有的漂亮的PHP-Parser打印机考虑到右边距。
PHP-Parser 本身有标准的漂亮打印机。
还有一个为 PHP-Parser 制作的PSR-2 漂亮的打印机。
DIY
如果这些还不够,您将不得不自己编写一个漂亮的打印机。
恕我直言,这应该不难。当一个节点超过右边距并缩进 4 个空格(或任何你使用的)时,你可以简单地换行。然后你可以开始优化诸如数组定义之类的东西。
这么晚才回复很抱歉。你也可以使用PHP Front。对语句的所有嵌套进行缩进,每个嵌套 2 个空格。
一些定制的缩进是可能的。它在PHP Front中可用。
解析器和漂亮的打印机也使用PHP的源分发的测试文件一起测试。
每个测试文件都被解析、漂亮打印、解析和漂亮打印。
通过在两个已解析文件和两个漂亮打印文件之间执行差异来测试此往返的正确性。
但是我建议使用标准一,因为它有很多功能。它具有变量表达式和数组表达式功能。与 PHP 前端一样,使用数组仍然存在一些错误。
标准漂亮打印机:(变量表达式和数组)
public function pExpr_Variable(Expr\Variable $node) {
if ($node->name instanceof Expr) {
return '${' . $this->p($node->name) . '}';
} else {
return '$' . $node->name;
}
}
public function pExpr_Array(Expr\Array_ $node) {
return 'array(' . $this->pCommaSeparated($node->items) . ')';
}