PHP 8.3: PHP CLI Lint (php -l) 支持一次额 linting 多个文件
PHP 的 CLI 命令行提供了 Linting 特性,用于检测传入的文件是否有语法错误。这对于在执行前快速检测 PHP 文件或者代码片段非常有用。
php -l my-file.php
No syntax errors detected in my-file.php
PHP 8.3 之前,同一个调用中要 lint 多个 PHP 文件时不可能的,无论提供了介个文件, PHP CLI 只会 lint 第一个文件:
php -l file1.php file2.php
No syntax errors detected in file1.php
从 PHP 8.3 起,可以传入多个 PHP 文件,PHP CLI 会在同一个调用中 lint 所有文件。
php -l file1.php file2.php
No syntax errors detected in file1.php
No syntax errors detected in file2.php
如果 linter 在提供的任何文件中发现任何错误,它会显示错误,并继续列表的其余部分。如果所有文件未通过 lint 测试,则存在错误。
支持全局 Pattern
除了单独传递多个文件名之外,还可以使用 glob 模式来 lint 多个文件:
php -l src/*.php src/**/*.php
退出码
- 如果有任何文件是不能访问的,退出码(exit code) 为
1
。 - 如果有任何文件是不能 lint 的,退出码(exit code) 为
255
。 - 如果上述两个错误都出现了,退出码为
1
。
向后兼容性影响
PHP 8.3 之前,PHP CLI 静默忽略传给 lint 的额外文件。对于 Glob 模式,它只使用第一个文件。
对于只运行在 PHP 8.3+ 的 PHP 应用,现在可以快速 lint 多个文件或整个代码库,而无需多次调用 Linter(例如使用 find
命令)或第三方工具。
第三方工具如 php-parallel-lint/PHP-Parallel-Lint
可以提供跨越多个 PHP 版本的并行 linting。