PHP 代码格式化
先做词法分析,再只改 token 之间的空白——token 本身一个字符都不动,所以格式化前后代码语义必然一致,不会出现「美化完跑不起来」的情况。字符串、heredoc、注释里的内容原样保留。
能做和不能做的
- 不会改坏代码。输出是把原来的 token 按新规则重新拼一遍,中间只有空白变化。压缩时会检查相邻 token 会不会粘成新符号(比如
+和+粘成++、/和/粘成注释),该留的空格一定留。 - 不做换行策略。超长的链式调用、数组字面量不会自动折行——那属于风格决策,交给 PHP-CS-Fixer 或 IDE 更合适。这里只解决「缩进乱了、空格不统一」。
- 模板式写法支持有限。
if (…): … endif;这种替代语法不会被识别成代码块,缩进不会跟着走。混了大量 HTML 的模板文件建议别用压缩。 - 压缩 PHP 的收益很小。PHP 是服务端执行的,压缩既不省带宽也不加速(opcache 缓存的是编译后的 opcode,跟源码长度无关)。真正的用途是混进单文件发布或者去掉注释。
- 相关:Shell 格式化、JS 格式化、SQL 格式化、HTML 格式化、代码转图片。