此翻译可能已过时。

配置参考

格式化器是有主见的,默认值即为合理的 PER-CS,但少量选项让你可以调整为不同的团队风格。所有项都位于 [formatter] 表下。

[formatter]
print-width = 100
use-tabs = true

预设

预设是为某种编码标准量身打包的一整套格式化器选项。

[formatter]
preset = "laravel"
预设含义
default兼容 PER-CS。等同于内置默认值。
psr-12PSR-12 编码标准。
laravelLaravel Pint 的 laravel 预设。
drupalDrupal 编码标准。

预设支持版本后缀:

preset = "psr-12@latest"
preset = "psr-12"          # same as @latest

目前仅支持 latest。未来的 Mago 版本将允许锁定到具体的标准版本。

你也可以把预设与单独的选项组合使用。预设提供基础,显式选项会覆盖它。

[formatter]
preset = "laravel"
print-width = 140

工具级选项

选项类型默认值说明
preset字符串defaultpsr-12laraveldrupal 之一。
excludes字符串列表[]格式化器跳过的路径或 glob。叠加在 source.excludes 之上。

这里的 excludes 是在全局列表之上叠加。被全局匹配到的文件总是会被排除;此选项只能让你额外为格式化器排除一些文件。

[source]
excludes = ["cache/**"]                          # excluded from every tool

[formatter]
excludes = ["src/**/AutoGenerated/**/*.php"]     # additionally excluded from formatting

布局与宽度

选项类型默认值说明
print-width整数120打印器进行换行的最大行长。
tab-width整数4每级缩进所占空格数。
use-tabs布尔值false使用制表符而非空格。
end-of-line枚举"lf"行尾。取值:autolfcrlfcr
single-quote布尔值true字符串优先使用单引号。
indent-heredoc布尔值true缩进 heredoc/nowdoc 的主体以匹配外层作用域(PER-CS 3.0 §10)。设为 false 时,主体和闭合标签位于第 0 列。
trailing-comma布尔值true在多行数组、参数列表等末尾添加尾随逗号。
remove-trailing-close-tag布尔值true去除文件末尾的 ?>

大括号位置

选项类型默认值说明
control-brace-style枚举"same-line"控制结构的大括号。
following-clause-on-newline布尔值falseelseelseifcatchfinally 放到新行。
closure-brace-style枚举"same-line"闭包和匿名类的大括号。
function-brace-style枚举"next-line"函数的大括号。
method-brace-style枚举"next-line"方法的大括号。
classlike-brace-style枚举"always-next-line"类、trait、接口、枚举的大括号。

大括号样式枚举均接受相同的三个值:

  • same-line:左大括号留在声明所在行。
  • next-line:对于单行签名,左大括号放到下一行;签名跨行换行时,左大括号留在声明行。
  • always-next-line:左大括号始终放到下一行,即使签名换行也是如此。

method-brace-style = "next-line" 时:

public function foo(): string
{
}

public function bar(
    string $veryLongParam,
): string {
}

method-brace-style = "always-next-line" 时:

public function bar(
    string $veryLongParam,
): string
{
}

空主体

选项类型默认值说明
inline-empty-control-braces布尔值false内联空的控制结构主体。
inline-empty-closure-braces布尔值true内联空的闭包主体。
inline-empty-function-braces布尔值true内联空的函数主体。
inline-empty-method-braces布尔值true内联空的方法主体。
inline-empty-constructor-braces布尔值true内联空的构造函数主体。
inline-empty-classlike-braces布尔值true内联空的类型主体。
inline-empty-anonymous-class-braces布尔值true内联空的匿名类主体。

方法链

选项类型默认值说明
method-chain-breaking-style枚举"next-line"一旦链断开,调用所在的位置。取值:same-linenext-line
first-method-chain-on-new-line布尔值true当对象链(->?->)断开时,把第一个调用放到新行。静态访问(::)保持附着在其目标上(PER-CS 4.7)。
method-chain-semicolon-on-next-line布尔值false当多行链是一条语句时,把终结的分号放到独立的一行。
preserve-breaking-member-access-chain布尔值false保留成员访问链中已有的换行。
preserve-breaking-member-access-chain-first-method-on-same-line布尔值false保留断开链时,把第一个方法保留在接收者所在行。

保留作者的换行

选项类型默认值说明
preserve-breaking-argument-list布尔值false保留参数列表(实参)中已有的换行。
preserve-breaking-array-like布尔值true保留数组类结构中已有的换行。
preserve-breaking-parameter-list布尔值false保留形参列表中已有的换行。
preserve-breaking-attribute-list布尔值false保留 attribute 列表中已有的换行。
preserve-breaking-conditional-expression布尔值false保留三元表达式中已有的换行。
preserve-breaking-condition-expression布尔值false保留控制结构条件中已有的换行。启用时,每个布尔运算符放在独立的一行。
break-promoted-properties-list布尔值true始终对包含构造器属性提升的形参列表进行换行。
parameter-attribute-on-new-line布尔值true形参列表换行时,把形参 attribute 放到独立的一行(PER-CS 12.2)。
line-before-binary-operator布尔值true二元表达式换行时,把运算符放到下一行。
indent-binary-expression-continuation布尔值false在赋值语句中缩进二元表达式的续行。自 1.19 起可用。
omit-redundant-arithmetic-binary-expression-parentheses布尔值false当比较或空合并已能保留语义时,去除算术运算外多余的括号。
omit-redundant-bitwise-binary-expression-parentheses布尔值false当优先级已能保留语义时,去除位运算子表达式外多余的括号。
preserve-redundant-logical-binary-expression-parentheses布尔值false当父表达式也是逻辑表达式时,保留作者在逻辑子表达式外书写的括号。

实参与形参对齐

选项类型默认值说明
always-break-named-arguments-list布尔值false始终对命名实参列表换行。
always-break-attribute-named-argument-lists布尔值false始终对 attribute 中的命名实参换行。
align-parameters布尔值false按变量进行多行形参列表的列对齐。
align-named-arguments布尔值false在多行调用和 attribute 中对命名实参进行列对齐。
array-table-style-alignment布尔值true对数组使用表格风格对齐。
align-assignment-like布尔值false对连续的赋值类构造(变量、多行数组键值对、属性、常量、枚举 case、match 分支)进行列对齐。紧凑的内联数组保持不对齐。

use 语句

选项类型默认值说明
sort-uses布尔值true按字母顺序排序 use 语句。
sort-class-methods布尔值false按可见性和类型排序类方法:构造函数在前,然后是静态方法,然后按可见性排序的实例方法,析构函数在最后。
separate-use-types布尔值true在不同种类的 use 之间插入空行。
expand-use-groups布尔值true把分组的 use 语句展开为单独的语句。

类型提示和构造

选项类型默认值说明
null-type-hint枚举"question"如何格式化可空类型。null_pipe?T 重写为 null|T,保留联合的顺序。null_pipe_last?T 重写为 T|null,并将联合中的 null 放到末尾。questionnull|TT|null 重写为 ?T
parentheses-around-new-in-member-access布尔值false在成员访问中包裹 new:(new Foo)->bar()
parentheses-in-new-expression布尔值true为没有实参的 new 添加 ():new Foo()
parentheses-in-exit-and-die布尔值trueexitdie 添加 ()
parentheses-in-attribute布尔值false为没有实参的 attribute 添加 ()

运算符周围的空白

选项类型默认值说明
space-before-arrow-function-parameter-list-parenthesis布尔值false箭头函数参数列表前的空格。
space-before-closure-parameter-list-parenthesis布尔值true闭包参数列表前的空格。
space-before-hook-parameter-list-parenthesis布尔值false属性钩子参数列表前的空格。
inline-abstract-property-hooks布尔值true把抽象属性钩子(get;set;)保留在一行(PER-CS 4.10)。
space-before-closure-use-clause-parenthesis布尔值true闭包 use (...) 前的空格。
space-after-cast-unary-prefix-operators布尔值true类似 (int) 的转换运算符之后的空格。
space-after-reference-unary-prefix-operator布尔值false& 之后的空格。
space-after-error-control-unary-prefix-operator布尔值false@ 之后的空格。
space-after-logical-not-unary-prefix-operator布尔值false! 之后的空格。
space-after-bitwise-not-unary-prefix-operator布尔值false~ 之后的空格。
space-after-increment-unary-prefix-operator布尔值false前缀 ++ 之后的空格。
space-after-decrement-unary-prefix-operator布尔值false前缀 -- 之后的空格。
space-after-additive-unary-prefix-operator布尔值false一元 +- 之后的空格。
space-around-concatenation-binary-operator布尔值true. 周围的空格。
space-around-assignment-in-declare布尔值falsedeclare= 周围的空格。
space-within-grouping-parenthesis布尔值false分组括号内部的空格:( 1 + 2 )

空行

选项类型默认值说明
empty-line-after-control-structure布尔值false控制结构之后的空行。
opening-tag-on-own-line布尔值true在纯 PHP 文件中,把 <?php 放到独立的一行(PER-CS 3.0)。带有内联 HTML 的模板不受影响。
empty-line-after-opening-tag布尔值true<?php 之后的空行。
empty-line-after-declare布尔值truedeclare 之后的空行。
empty-line-after-namespace布尔值truenamespace 之后的空行。
empty-line-after-use布尔值trueuse 块之后的空行。
empty-line-after-symbols布尔值true顶层符号之后的空行。
empty-line-between-same-symbols布尔值true同种类型连续符号之间的空行。仅当 empty-line-after-symbols 为 true 时生效。
empty-line-after-class-like-open布尔值false类型左大括号之后的空行。
empty-line-after-class-like-constant布尔值false类常量之后的空行。
empty-line-before-class-like-close布尔值false非空类型右大括号之前的空行。
empty-line-after-enum-case布尔值false枚举 case 之后的空行。
empty-line-after-trait-use布尔值falsetrait use 之后的空行。
empty-line-after-property布尔值false属性之后的空行。
empty-line-after-method布尔值true方法之后的空行。
empty-line-before-return布尔值falsereturn 之前的空行。
empty-line-before-dangling-comments布尔值true悬挂注释之前的空行。
separate-class-like-members布尔值true不同种类的类成员之间的空行。

大小写

选项类型默认值说明
uppercase-literal-keyword布尔值false设为 true 时,把 truefalsenull 格式化为大写。

↳ 编辑此页 →