IntelliJ IDEA 2025.1 Help

代码样式。 PHP

使用此页面配置 PHP 文件的格式选项。 当您更改这些设置时, 预览 面板将显示这将如何影响您的代码。

设置自...

点击此链接并选择要作为当前语言代码样式基础的语言。 该列表包含两个选项:

  • 语言 :选择此选项以从另一种语言继承编码样式设置。 从打开的列表中选择源语言。 只有适用于当前语言的设置才会被采用。 所有其他设置均不受影响。

  • 预定义代码样式 :选择此选项以使用为特定框架定义的编码标准。 从列表中选择以下框架之一:

    • PEAR

    • Zend

    • Symfony2。 IntelliJ IDEA 支持官方的 Symfony2 Twig 代码样式,并会在 Twig 模板中自动插入一个空格,位于开头的大括号 和结束的大括号 {{ some_variable }}

    • PSR1/PSR-2

    • CodeIgniter

    • Laravel

    • PSR-12。 如果设置了 PSR-12 代码样式,IntelliJ IDEA 将提示您自动启用和 PSR-12 相关的代码检查

    • Drupal

    • Joomla!

    • WordPress

此链接会在适用时出现在语言特定代码样式页面的右上角。

点击 重置 以放弃更改并返回至初始的代码样式设置。

制表符和缩进

条目

描述

使用制表符

请使用 Tab 键进行缩进。 当复选框未勾选时, IntelliJ IDEA 使用空格而非制表符。

智能制表符

  • 如果选中此复选框,则嵌套代码块的缩进将根据需要使用制表符和空格,而对齐缩进则仅使用空格。

    开启 Smart Tabs 的代码样式
  • 如果此复选框未选中,将只使用选项卡。 这意味着一组符合指定制表符大小的空格将自动替换为一个制表符,这可能会导致精细对齐的破坏。

    禁用 Smart Tabs 的代码样式

智能制表符 复选框在启用 使用制表符 选项时可用。

制表符大小

在此字段中,指定一个选项卡中包含的空格数。

缩进

在此字段中,指定为每个缩进级别插入的空格数量。

连续缩进

指定从前一行延续的行的缩进,使其清晰地表示它们是同一语句或代码块的一部分。 当单个语句过长而无法放在一行中时,使用续行缩进。

空行时保持缩进

如果选中此复选框,IntelliJ IDEA 将会保持空行的缩进,就像它们包含了一些代码一样。

如果取消勾选此复选框,IntelliJ IDEA 将删除制表符和空格。

缩进PHP 标记中的代码

选择此复选框,可以使被 <?php> 选项卡包围的代码相对于开头的 <?php 选项卡进行缩进。

空格

在各种 PHP 上下文中选择或清除复选框以插入、不插入或移除空格。

在括号前

条目

描述

函数声明括号

如果被选中,在函数声明的开头括号前将插入一个空格。 否则,不插入空格。

function foo ($x, $z) {}
function foo($x, $z) {}

函数调用括号

如果选中,函数调用中的开括号前会插入一个空格。 否则,不插入空格。

$obj->foo ()->bar ();
$obj->foo()->bar();

匿名函数括号

如果选中,将在匿名函数声明的开头括号前插入一个空格。 否则,不插入空格。

$example = function () {};
$example = function() {};

'if' 圆括号

如果选中,将在 if 构造的开头括号前插入一个空格。 否则,不插入空格。

if ($x) { echo $x; }
if($x) { echo $x; }

'for' 圆括号

如果选中,将在 for 循环中的开括号前插入一个空格。 否则,不插入空格。

for ($i = 0; $i < $x; $i++) { $y += $i; }
for($i = 0; $i < $x; $i++) { $y += $i; }

'while' 圆括号

如果选中,将在 while 循环中的开括号前插入一个空格。 否则,不插入空格。

while ($x != $y) { echo ($x * 2); }
while($x != $y) { echo ($x * 2); }

'switch' 圆括号

如果选中,将在 switch 声明中的开头括号之前插入一个空格。 否则,不插入空格。

switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; }
switch($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; }

'catch' 圆括号

如果选中,将在 catch 构造的开头括号前插入一个空格。 否则,不插入空格。

try { get($x); } catch (Exception $e) { }
try { get($x); } catch(Exception $e) { }

数组初始值设定项圆括号

如果选中,将在数组声明的开头括号前插入一个空格。 否则,不插入空格。

$array = array (0 => "zero", 1 => "one");
$array = array(0 => "zero", 1 => "one");

箭头函数括号

如果选中,将在匿名函数声明的开头括号前插入一个空格。 否则,不插入空格。

$double = fn ($x) => $x * 2;
$double = fn($x) => $x * 2;

围绕操作符

条目

描述

赋值运算符(=、+=、…)

如果选中,将在赋值表达式中的赋值操作符周围插入空格。 否则,不会插入空格。

$var = f($a);
$var=f($a);

逻辑运算符(&&、||)

如果选中,逻辑表达式中的逻辑运算符周围会插入空格。 否则,不会插入空格。

$var = $a && $b;
$var = $a&&$b;

相等运算符(==、!=)

如果选择,比较表达式中的等号运算符周围将插入空格。 否则,不会插入空格。

if ($a == $b) {};
if ($a==$b) {};

关系运算符(<、>、<=、>=)

如果被选中,关系运算符在比较表达式中会插入空格。 否则,不会插入空格。

if ($a > $b) {};
if ($a>$b) {};

按位运算符(&、|、^)

如果选中,将在位运算符周围插入空格。 否则,不会插入空格。

$var += ($var ^ 0x123);
$var += ($var^0x123);

加法运算符(+、-)

如果选中,将在加法运算符周围插入空格。 否则,不会插入空格。

$var = $a + $b;
$var = $a+$b;

乘法运算符(*, /, %, **)

如果选中,将在乘法运算符周围插入空格。 否则,不会插入空格。

$var = $a * $b;
$var = $a*$b;

移位运算符(<<、>>、>>>)

如果选中,将在位移运算符周围插入空格。 否则,不会插入空格。

$var = $a << 1;
$var = $a<<1;

一元加法运算符(+,-,++,--)

如果选中,将在一元加法运算符周围插入空格。 否则,不会插入空格。

for ($i = 0; $i < $x; $i ++) {}
for ($i = 0; $i < $x; $i++) {}

串联(.)

如果选中,将在 . 连接运算符周围插入空格。 否则,不会插入空格。

echo "The result is " . $i;
echo "The result is ".$i;

对象访问运算符(->)

如果选中,将在 -> 对象访问运算符周围插入空格。 否则,不会插入空格。

$obj -> foo() -> bar();
$obj->foo()->bar();

null 合并运算符(??)

如果选择,空格会被插入到 ?? 空合并运算符周围。 否则,不会插入空格。

foo() ?? bar();
foo()??bar();

在declare 语句中赋值

如果选中,将在 declare 语句中的赋值运算符周围插入空格。 否则,不会插入空格。

declare(strict_types = 1);
declare(strict_types=1);

在左大括号之前

条目

描述

类左大括号

如果选中,类声明中的类名和左大括号之间将插入一个空格。 否则,不插入空格。

class Class1 { function Foo() {} }
class Class1{ function Foo() {} }

选择或清除复选框只在 大括号位置在类声明中 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

方法左括号

如果选中,将在方法声明中方法参数列表的右括号和左大括号之间插入一个空格。 否则,不插入空格。

function foo() {}
function foo(){}

选择或清除复选框只在 大括号位置在方法声明中 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'if' 左大括号

如果选中,条件表达式的闭括号和 if 语句的开括号之间将插入一个空格。 否则,不插入空格。

if ($x) { echo $x; }
if ($x){ echo $x; }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'else' 左大括号

如果选中, else 关键字和 if-else 语句中的开括号之间将插入一个空格。 否则,不插入空格。

if ($x) { echo $x; } else { echo $y; }
if ($x) { echo $x; } else{ echo $y; }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'for' 左大括号

如果选中,条件表达式的结束括号和 for 循环的开始大括号之间将插入一个空格。 否则,不插入空格。

for ($i = 0; $i < $y; $i++) { $str = $arr[$i]; }
for ($i = 0; $i < $y; $i++){ $str = $arr[$i]; }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'while' 左大括号

如果选中,条件表达式的结束括号和 while 循环的开始大括号之间将插入一个空格。 否则,不插入空格。

while ($var != $x) { $var++; }
while ($var != $x){ $var++; }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'do' 左大括号

如果选中,将在 do 关键字和 do-while 循环中的开启大括号之间插入空格。 否则,不插入空格。

do { echo $var; } while ($var > 0);
do{ echo $var; } while ($var > 0);

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'switch' 左大括号

如果选中,条件表达式的闭括号和 switch 语句的开括号之间将插入一个空格。 否则,不插入空格。

switch ($i) { case 0: $var = 'zero'; break; default: $var = 'other'; }
switch ($i){ case 0: $var = 'zero'; break; default: $var = 'other'; }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'try' 左大括号

如果选中,将在 try 关键词和 try 块的开括号之间插入一个空格。 否则,不插入空格。

try { get($x); } catch (Exception $e) { }
try{ get($x); } catch (Exception $e) { }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'catch' 左大括号

如果选中,将在 catch 语句参数列表和 catch 块的开括号之间插入一个空格。 否则,不插入空格。

try { get($x); } catch (Exception $e) { }
try{ get($x); } catch (Exception $e){ }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'finally' 左大括号

如果选中,将在 finally 关键词和 finally 块的开括号之间插入一个空格。 否则,不插入空格。

try { get($x); } catch (Exception $e) { } finally { }
try { get($x); } catch (Exception $e) { } finally{ }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

在关键词之前

条目

描述

'else' 关键字

如果选中,将在 if 块的闭合括号和 else/elseif 关键字之间插入一个空格。 否则,不插入空格。

if ($x) { echo $x; } else { echo $y; }
if ($x) { echo $x; }else { echo $y; }

'while' 关键字

如果选中,一个空格会被插入在 do 块的关闭括号和 while 关键字之间,在 do-while 循环中。 否则,不插入空格。

do { echo $var; } while ($var > 0);
do { echo $var; }while ($var > 0);

'catch' 关键字

如果选中,一个空格将会在 try 块的闭合括号和 catch 关键字之间插入。 否则,不插入空格。

try { get($x); } catch (Exception $e) { }
try{ get($x); }catch (Exception $e) { }

'finally' 关键字

如果选中,一个空格将会在 catch 块的闭合括号和 finally 关键字之间插入。 否则,不插入空格。

try { get($x); } catch (Exception $e) { } finally { }
try { get($x); } catch (Exception $e) { }finally { }

条目

描述

中括号

如果选中,括号内总是会插入空格。 否则,永远不会插入空格。

使用中括号将变量/表达式括起来

如果选中,IntelliJ IDEA 仅在格式化时在括号内插入空格,条件是括号中封闭的是变量或表达式。 此设置仅在您未通过选择 中括号 复选框配置强制在括号内插入空格的情况下才会影响重新格式化,该复选框位于 内部 节点下的 空格 选项卡中。

这个选项可以帮助您保持代码符合 WordPress PHP 编码规范

如果取消选中此复选框,空格插入策略将取决于 中括号 设置,而不考虑括号内内容的类型。

数组初始值设定项圆括号

如果选中,数组初始化表达式中的括号内总是会插入空格。 否则,不会插入空格。

$array = array( 0 => "zero", 1 => "one" );
$array = array(0 => "zero", 1 => "one");

分组圆括号

如果选中,复杂表达式中分组括号内的空格将始终插入。 否则,不会插入空格。

$var += ( $var ^ 0x123 ) << 2;
$var += ($var ^ 0x123) << 2;

函数声明括号

如果选中,函数声明中的括号内总是会插入空格。 否则,不会插入空格。

function foo( $x, $z ) {}
function foo($x, $z) {}

函数调用括号

如果选中,函数调用中的括号内部始终会插入空格。 否则,不会插入空格。

foo( $x, $z );
foo($x, $z) {};

'if' 圆括号

如果选中,那么在 if 声明中的括号内部总是会插入空格。 否则,不会插入空格。

if ( $x ) { echo $x; }
if ($x) { echo $x; }

'for' 圆括号

如果选中, for 循环中的括号内总是会插入空格。 否则,不会插入空格。

for ( $i = 0; $i < $x; $i++ ) { $y += $i; }
for ($i = 0; $i < $x; $i++) { $y += $i; }

'while' 圆括号

如果选中, while 循环中的括号内总是会插入空格。 否则,不会插入空格。

while ( $x != $y ) { echo ($x * 2); }
while ($x != $y) { echo ($x * 2); }

'switch' 圆括号

如果选中,那么在 switch 声明中的括号内部总是会插入空格。 否则,不会插入空格。

switch ( $i ) { default: echo "i equals 0"; break; }
switch($i) { default: echo "i equals 0"; break; }

'catch' 圆括号

如果选中, catch 结构中括号内的空格将始终被插入。 否则,不会插入空格。

try { get($x); } catch ( Exception $e ) { }
try { get($x); } catch (Exception $e) { }

<?= 和 ?>

如果选中,始终会在打开和关闭的 PHP 选项卡(<?= 和 ?>)内插入空格。 否则,不会插入空格。

<div><?= echo foo(); ?></div>
<div><?=echo foo();?></div>

在三元运算符 (?:) 中

条目

描述

在'?' 前

在'?' 后

在':' 前

在':' 后

'?' 与 ':' 之间

选中此部分中的复选框以在 ? 周围、 : 周围以及 ?: 之间(在 三元(条件)运算符 中)自动插入空格。

例如,如果选中了 在'?' 前在':' 后, IntelliJ IDEA 会在三元条件表达式中的 ? 前和 : 后自动插入空格。 否则,不会插入空格。

$var = $x > 0 ?1: 2;
$var = $x > 0?1:2;

其他

条目

描述

在逗号前/在逗号后

如果选中,将自动在参数列表、参数列表、数组声明等前后插入空格。 否则,不会插入空格。

function foo ($x , $z) {}
function foo ($x,$z) {}

'for' 分号之前/'for' 分号之后

如果选中,空格将自动插入到 for 循环中的分号前/后。 否则,不会插入空格。

for($i = 0 ; $i < $x ; $i++) { $y += $i; }
for($i = 0;$i < $x;$i++) { $y += $i; }

在类型转换后

如果选中,将在 cast 的闭括号後自动插入一空格。 否则,不插入空格,强制转换后的变量会粘附到强制转换上。

$fst = (string) $foo;
$fst = (string)$foo;

返回值类型中的冒号之前/返回值类型中的冒号之后

如果选中,函数返回类型声明中的冒号前/后将自动插入空格。 否则,不会插入空格。

function foo() : int {}
function foo():int {}

联合体类型的| 周围

如果选择,空格将自动插入到管道符号 | 中,处于 联合类型的声明中。 否则,不会插入空格。

function returnNumber ( int | float $number) : int | float {}
function returnNumber ( int|float $number) : int|float {}

命名实参中的冒号之前/命名实参中的冒号之后

如果选中,将会自动在命名参数的冒号前后插入空格。 否则,不会插入空格。

foo(start : $a, end : $b);
foo(start:$a, end:$b);

在后备枚举中类型声明旁边的冒号前面/在后备枚举中类型声明旁边的冒号后面

如果选中,空格将自动插入到 backed enums' 类型声明中的冒号前/后。 否则,不会插入空格。

enum Suit : string { case Hearts = 'H'; case Diamonds = 'D'; case Clubs = 'C'; case Spades = 'S'; }
enum Suit:string { case Hearts = 'H'; case Diamonds = 'D'; case Clubs = 'C'; case Spades = 'S'; }

一元非(!)之前/一元非(!)之后

如果选中,将在一元 Not ! 运算符前后自动插入空格。 否则,不会插入空格。

if ( ! 0 > $x && ! $x < 10) {}
if (!0 > $x && !$x < 10) {}

包装和大括号

常见选项

条目

描述

强制换行位置

使用此字段指定元素右侧所需的边距空间。 如果您选择了 默认 选项,那么将会使用来自 全局设置 的右边距值。

键入时换行

使用这些设置来指定如何将编辑过的文本适应指定的 强制换行位置

  • 默认 :在这种情况下,IntelliJ IDEA 使用的是 键入时换行 选项,该选项在 全局设置中指定。

  • :在这个例子中,IntelliJ IDEA 使用了在 右边距 字段里指定的值。

  • :在这种情况下,此选项被关闭,一行可以超过右侧边距指定的值。

视觉参考线

使用此字段来指定多个右边距。 您可以保留默认值,或者输入您的边距所需的空格数。 如果您想要指定多个边距,请输入由顿号分隔的数字。

在重新格式化时保持

使用这些设置来配置IntelliJ IDEA在重新格式化源代码时将进行的异常处理。

条目

描述

换行符

如果选中,代码 重新格式化 后将保留换行符。 否则,短于标准规定的行将被合并为一行。

注释在第一列

如果选中,位于第一列的注释在 重新格式化 代码后不会改变它们的位置。 否则,此类注释将与下一行代码对齐。

控制语句在同一行

如果选中,控制语句将会在 重新格式化 代码后被置于行内。 否则,它们将会被放置在多行上。

if (true) $x = 10; elseif ($y < 10) $x = 5; else if (true) $x = 5;
if (true) $x = 10; elseif ($y < 10) $x = 5; else if (true) $x = 5;

简单的方法在同一行

如果选中,简易方法会在 重新格式化代码后保持在同一行。 否则,它们将展开成多行。

class Foo() { public function bar() { } }
class Foo() { public function bar() { } }

简单的类在同一行

如果选中,简单的类将在 重新格式化 代码后保持在行内。 否则,它们将展开成多行。

class Foo() { }
class Foo() { }

大括号的位置

在此部分中,选择在命名空间、类和函数的声明,以及在循环和其他结构中打开大括号的位置。

选项

描述

行尾

如果选中,大括号将放在声明行的末尾。

下一行(如果换行)

如果选中,开括号将位于多行声明行后的行首。

下一行

如果选中,声明行之后的行首会放置开括号。

下一行(移位)

如果选中,开括号将被放置在声明行之后的行,且将移至相应的缩进级别。

下一行,每次移位

如果选中,那么开括号将被放在声明行之后的行处,并将其对应到相应的缩进级别,同样,下一行也将被移动到下一个缩进级别。

要配置空类或函数 / 方法中大括号的位置,请使用 将空类的大括号放在一行将空函数/方法的大括号放在一行 复选框。

扩展/实现列表

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

多行时对齐

如果选中, extends实现 列表中的每个项目,包装后开始新行,都将根据未包装的第一个项目进行对齐。

当取消勾选复选框时,折叠列表中每个项目的位置由所选缩进级别确定。

复选框的状态只有在您选择换行列表时才会影响格式,如果选择了 不换行 选项,选中或取消复选框无效。

class Foo extends Class1 implements Class2, Class3, Class4 { }
class Foo extends Class1 implements Class2, Class3, Class4 { }

扩展/实现关键字

在此部分中,为类声明中的 extends实现 关键词配置换行。

如果您选择 不换行 ,则不会应用换行;如果您选择 过长则换行始终换行 ,则 extends实现 列表中的每个关键字和每个项目都将显示在新行上。

abstract class Foo extends Class1 implements Class2, Class3 { }
abstract class Foo extends Class1 implements Class2, Class3 { }

函数声明参数

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

多行时对齐

如果选中,参数列表中每一个参数在换行后开始的新行上都将根据第一个未换行的参数进行对齐。

当取消勾选复选框时,折叠列表中每个项目的位置由所选缩进级别确定。

复选框的状态只有在您选择换行列表时才会影响格式,如果选择了 不换行 选项,选中或取消复选框无效。

function bar($x, $y, int $z = 1) {}
function bar($x, $y, int $z = 1) {}

在'(' 后换行

如果选中,函数/方法声明中的参数将在开括号后的新行上显示。 否则,它们将在同一行上显示。

当取消勾选复选框时,折叠列表中每个项目的位置由所选缩进级别确定。

复选框的状态只有在您选择换行列表时才会影响格式,如果选择了 不换行 选项,选中或取消复选框无效。

function bar( $x, $y, int) {}
function bar($x, $y, $z) {}

将')' 置于新行中

如果选中,函数/方法声明中的闭括号将被放在新的一行上。 否则,它将与最后一个参数显示在同一行上。

function bar( $x, $y, int ) {}
function bar( $x, $y, int) {}

将')' 和 '{' 保持在同一行

如果选中,函数参数所在的行会显示开头的大括号。 否则,大括号将移到下一行。

function Foo() { }
function Foo() { }

函数/构造函数调用参数

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

多行时对齐

如果选中,函数调用中的每个参数在换行后开始的新行,都会根据第一个未换行的参数进行对齐。

当取消勾选复选框时,折叠列表中每个项目的位置由所选缩进级别确定。

复选框的状态只有在您选择换行列表时才会影响格式,如果选择了 不换行 选项,选中或取消复选框无效。

$result = foo("arg1", "arg2", true);
$result = foo("arg1", "arg2", true);

在'(' 后换行

如果选中,函数调用中的参数将在开括号之后的新行上显示。 否则,它们将在同一行上显示。

$result = foo("arg1", "arg2", true);
$result = foo( "arg1", "arg2", true);

将')' 置于新行中

如果选中,函数调用中的关闭括号将放置在新行上。 否则,它将与最后一个参数在同一行显示。

$result = foo("arg1", "arg2", true );
$result = foo("arg1", "arg2", true);

放置构造函数的'()'

选择是否在重构代码过程中,IntelliJ IDEA 应自动在无参数的构造语句中添加大括号。

  • 保留原样 :保留已有的大括号,不添加新的大括号。

  • 始终 :总是会添加大括号。

  • 从不 :括号总是被移除。

$var = new ExampleClass();
$var = new ExampleClass;

对齐命名实参

如果选中,函数调用中的命名参数会与最右侧的参数对齐。 否则,它们将根据缩进设置进行对齐。

foo( start : $a, end : $b );
foo( start : $a, end : $b );

链式方法调用

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

多行时对齐

如果选中,每个被调用的方法,在换行后将会根据第一个保持未换行的方法进行对齐。

当取消勾选复选框时,折叠列表中每个项目的位置由所选缩进级别确定。

复选框的状态只有在您选择换行列表时才会影响格式,如果选择了 不换行 选项,选中或取消复选框无效。

$x = $x->one( "a", "b" ) ->two( "c", "d", "e" ) ->three( "fg" ) ->four();
$x = $x->one( "a", "b" ) ->two( "c", "d", "e" ) ->three( "fg" ) ->four();

将';' 置于新行中

如果选中,分号 ; 将在链式调用的最后一项后移到新行。 否则,它将显示在同一行上。

$x = $x->one( "a", "b" ) ->two( "c", "d", "e" ) ->three( "fg" ) ->four() ;
$x = $x->one( "a", "b" ) ->two( "c", "d", "e" ) ->three( "fg" ) ->four();

'if()' 语句

条目

描述

在第一个元素后换行

如果选中,条件表达式将在 if 语句的开头括号后的下一行中移动。 否则,它们会保持在同一行。

if ( $var == "one") { }
if ($var == "one") { }

在最后一个元素后换行

如果选中,条件表达式的闭合括号在 if 语句中将移至下一行。 否则,它们会保持在同一行。

if ($var == "one" ) { }
if ($var == "one") { }

强制加大括号

if 语句选择括号介绍方法:

  • 不强制 :选择此选项以自动阻止引入括号。

  • 当多行时 :如果语句占用多行,则选择此选项以自动引入括号。 请注意,IntelliJ IDEA 分析的是整个声明中的行数,而非仅其条件。

    IntelliJ IDEA 将自动插入大括号:

  • 始终 :勾选此复选框以自动始终添加大括号。

'else' 在新行

如果被选中, else 关键字将在 if-else 语句中移动到新的一行。 否则,它将与前面的语句保持在同一行。

if ($var == "one") { } else $var = true;
if ($var == "one") { } else $var = true;

特殊的'else if' 对待

如果选中, else if 构造将被特别对待,在重新格式化过程中不会被拆分。 否则,它们将被拆分为嵌套的 else-if 结构。

复选框的状态只有在您选择在 if 语句中强制使用大括号时才会影响格式。 如果选择了 不强制 选项,那么 特殊的'else if' 对待 复选框将无效。

if (true) $x = 10; else if ($y < 10) $x = 5; else $x = 0;
if (true) { $x = 10; } else { if ($y < 10) { $x = 5; } else $x = 0;

for() / foreach() 语句

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

多行时对齐

当选择了该复选框,且清除了 在第一个元素后换行 复选框后, for/foreach 循环表达式中的每一项,在换行后都会从新的一行开始,且会以第一项(未换行的项)为参考进行对齐。

for ($i = 0; $i < $x; $i++) { $y += $i; }
for ($i = 0; $i < $x; $i++) { $y += $i; }

在'(' 后换行

如果选中, for/foreach 循环中的表达式将在开括号后的下一行显示。 否则,它们将在同一行上显示。

for ( $i = 0; $i < $a; $i++) { $y += $i; }
for ($i = 0; $i < $a; $i++) { $y += $i; }

将')' 置于新行中

如果选中, for/foreach 循环中的闭括号将显示在表达式的下一行。 否则,它们将在同一行上显示。

for ( $i = 0; $i < $a; $i++ ) { $y += $i; }
for ($i = 0; $i < $a; $i++) { $y += $i; }

强制加大括号

请选择 for/foreach 循环的大括号引入方法:

  • 不强制 :选择此选项以自动阻止引入括号。

  • 当多行时 :如果语句占用多行,则选择此选项以自动引入括号。 请注意,IntelliJ IDEA 分析的是整个声明中的行数,而非仅其条件。

    IntelliJ IDEA 将自动插入大括号:

  • 始终 :勾选此复选框以自动始终添加大括号。

'while()' 语句

条目

描述

强制加大括号

选择 while 循环的花括号引入方法:

  • 不强制 :选择此选项以自动阻止引入括号。

  • 当多行时 :如果语句占用多行,则选择此选项以自动引入括号。 请注意,IntelliJ IDEA 分析的是整个声明中的行数,而非仅其条件。

    IntelliJ IDEA 将自动插入大括号:

  • 始终 :勾选此复选框以自动始终添加大括号。

"do ... while()" 语句

条目

描述

强制加大括号

选择 do-while 循环的花括号引入方法:

  • 不强制 :选择此选项以自动阻止引入括号。

  • 当多行时 :如果语句占用多行,则选择此选项以自动引入括号。 请注意,IntelliJ IDEA 分析的是整个声明中的行数,而非仅其条件。

    IntelliJ IDEA 将自动插入大括号:

  • 始终 :勾选此复选框以自动始终添加大括号。

'while' 在新行

如果选中, while 关键字将在 do 块后的下一行移至 do-while 循环中。 否则,它将保持在同一行。

do { echo $var; } while ($var > 0);
do{ echo $var; } while ($var > 0);

' switch ' 语句

条目

描述

缩进'case' 分支

如果选中, case 语句将相对于 switch 语句进行缩进。 否则,它们将被放置在相同的缩进级别。

switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; }
switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; }

从'case' 缩进 'break'

如果选中, break 语句相对于 case 语句进行缩进。 否则,它们将被放置在相同的缩进级别。

switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; }
switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; }

'尝试' 语句

条目

描述

'catch' 在新行

如果选中, catch 语句将在 try 块的闭括号后的下一行放置。 否则,它们将被放置在同一行。

try { get($x); } catch (Exception $e) { }
try { get($x); } catch (Exception $e) { }

'finally' 在新行

如果选中, finally 语句将在 catch 块的闭括号后的下一行放置。 否则,它们将被放置在同一行。

try { get($x); } catch (Exception $e) { } finally { }
try { get($x); } catch (Exception $e) { } finally { }

二元表达式

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

多行时对齐

如果选中,每个在换行后开始的二元运算中的操作数,都将根据第一个未换行的项对齐。 否则,操作数的缩进将根据缩进设置进行。

function foo($a, $b, $c) { return $a + $b + $c; }
function foo($a, $b, $c) { return $a + $b + $c; }

运算符号置于下一行

如果选中,二元运算中的操作符将与换行后的右操作数一起移至下一行。 否则,运算符与左操作数一同留在上一行。

function foo($a, $b, $c) { return $a + $b + $c; }
function foo($a, $b, $c) { return $a + $b + $c; }

在'(' 后换行

如果选中,将在开括号后添加新行,并将二进制表达式移至该行。 否则,表达式会与开括号保持在同一行。

$a = $b + ( $c + $d);
$a = $b + ($c + $d);

将')' 置于新行中

如果选中,关闭括号将在二元表达式后移至新的一行。 否则,括号将与表达式保持在同一行。

$a = $b + ($c + $d );
$a = $b + ($c + $d);

赋值语句

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

赋值符号置于下一行

如果选中,赋值语句中的赋值符号将连同换行后的右操作数一起移至下一行。 否则,运算符与左操作数一同留在上一行。

var $numbers = array("one", "two", "three");
var $numbers = array("one", "two", "three");

对齐连续赋值

如果选中,连续赋值语句中的赋值符号将按最右边的一个对齐。 否则,不会应用任何对齐。

$y = foo( $x ); $i = foo( $i ); $result = $result . $y . $i;
$y = foo( $x ); $i = foo( $i ); $result = $result . $y . $i;

类属性/常量组

条目

描述

对齐列中属性

如果选中,类属性的声明将按照最右边的一个对齐。 否则,不会应用任何对齐。

class Foo { public $a; protected $b; private $c }
class Foo { public $a; protected $b; private $c }

对齐常量

如果选中,将按最右侧一个对分组常量的声明进行对齐。 否则,不会应用任何对齐。

class Foo { const ONE = 1; const TWO = 2; const THREE = 3; }
class Foo { const ONE = 1; const TWO = 2; const THREE = 3; }

对齐枚举case

如果选中,后端枚举中的指定值将根据最右边的一个进行对齐。 否则,不会应用任何对齐。

enum Suit: string { case Clubs = '♣'; case Diamonds = '♦'; case Hearts = '♥'; case Spades = '♠'; }
enum Suit: string { case Clubs = '♣'; case Diamonds = '♦'; case Hearts = '♥'; case Spades = '♠'; }

三元运算

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

'?' 和 ':' 符号置于下一行

如果选中, ?: 符号将与换行后的右操作数一起移至下一行。 否则,它们将与左操作数一起保留在前一行。

echo ($result == 42) ? "Passed" : " Failed";
echo ($result == 42) ? "Passed" : " Failed";

数组初始化器

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

多行时对齐

如果选中,每个数组元素,在换行后定位在新的行,会根据第一个未换行的元素进行对齐。 否则,所有元素都将根据缩进设置进行对齐。

$arr = [0.1, 0.2, 0.3, 0.4 ];
$arr = [0.1, 0.2, 0.3, 0.4 ];

选择或清除 多行时对齐 复选框只会在您选择了换行列表时影响格式。 如果选择了 不换行 选项,复选框的状态将没有影响。

对齐键值对

如果选中,则所有键值数组元素都将与最右侧的赋值运算符 => 对齐。 否则,所有元素都将根据缩进设置进行对齐。

$arr = [0 => "value 1", 1234 => "value 2", 56 => "value 3" ];
$arr = [0 => "value 1", 1234 => "value 2", 56 => "value 3" ];

在第一个元素后换行

如果选中,数组的第一个元素将显示在新的一行,数组的所有元素都将根据缩进设置进行对齐,无论 多行时对齐 复选框的状态如何。 否则,数组的第一个元素仍在同一行上,其他元素则根据缩进设置进行对齐。

$arr = [ "value 1", "value 2", "value 3" ];
$arr = ["value 1", "value 2", "value 3" ];

在最后一个元素后换行

如果选中,闭合括号将显示在单独的一行。 否则,它将与数组的最后一个元素保持在同一行。

$arr = ["value 1", "value 2", "value 3" ];
$arr = ["value 1", "value 2", "value 3"];

修改符列表

条目

描述

在修饰符列表后换行

如果被选中,代码会在一系列可见性修饰符后进行折叠。 否则,不执行换行操作。

protected function Foo() { }
protected function Foo() { }

函数返回类型

条目

描述

返回值类型位于新行中

如果选中,函数的返回类型声明将被放在下一行。 否则,它们会保持在同一行。

function foo() : int { }
function foo() : int { }

注释

条目

描述

对齐内联注释

如果选中,连续行上的内联注释将按最右侧的注释进行对齐。

echo "one"; //one echo "two"; //two echo "three"; //three
echo "one"; //one echo "two"; //two echo "three"; //three

PHP 开启选项卡

条目

描述

在'<?php' 标记后换行

如果选中,代码将在打开 <?php 选项卡后的下一行移动。 否则,它将保持在同一行。

<?php echo "Message";
<?php echo "Message";

'匹配'表达式

条目

描述

对齐'match' arm 主体

如果被选中,所有在 match 分支中的表达式都会与最右边的操作符 => 对齐。 否则,表达式将根据缩进设置进行对齐。

match ($i) { 0 => 'zero', 42 => 'forty-two', default => 'none' };
match ($i) { 0 => 'zero', 42 => 'forty-two', default => 'none' };

Heredoc 和 nowdoc

条目

描述

与变量声明放在同一行

如果选中,IntelliJ IDEA 将根据 PER 编码风格 2.0 格式化 heredocs 和 nowdocs。

Heredocs 和 nowdocs 被放置在与它们所设定的变量声明相同的行上。 此外,heredoc 或 nowdoc 中的后续行的缩进比它们所在的作用范围缩进多四个空格。

$value = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD;
$value = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD;

"use" 组

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

属性

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

参数的属性

条目

描述

常见的封装选项

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

空白行

使用此选项卡定义在重新格式化后,您希望 IntelliJ IDEA 保留并在您的代码中插入多少空行以及在何处插入。 对于每种类型的位置,请指定要插入的空行数量。 结果将在预览窗格中显示。

条目

描述

保持最大的空白行

在此区域,指定在指定位置重新格式化后要保留的空行数。

最小的空白行

在此区域,指定在指定位置应存在的空行数量。

PHPDoc

在此选项卡中,配置在 PHPDoc 注释内应用的代码样式。 在 PHPDoc 注释 中了解更多有关记录 PHP 代码的信息。

条目

描述

保留空行

选择此复选框以禁止自动删除空行。

在第一个标记前使用空行

选择此复选框,可在第一个 PHPDoc 标记上方插入空行。

在形参周围使用空行

选择此复选框,将在带有 @param 选项卡的部分的上方和下方插入一个空行。

长行换行

选择此复选框,将超出右边距的文本换行到下一行。

对齐形参/属性名称

选择此复选框可使 $<paramname> 元素对齐。

对齐标记注释

选择此复选框可使 description 元素对齐。

PHPDoc '@param' 空间

在此区域中,设置用于分隔 @param 选项卡元素的空格数量。

生成的PHPDoc 标记

在此区域中,配置在生成的 PHP 文档块中应用的代码样式,请参考 PHPDoc 注释

  • 使用完全限定类名 :选中此复选框,以便IntelliJ IDEA指定属性、函数参数、 returnthrows 值等的完全限定类名。

  • 将'null' 置于以下类型中 :选择此复选框可让产品为 可空参数和返回类型生成注释并选择应放置 null 指示的位置(即, string|nullnull|string)。

对PHPDoc 标记排序

选择此复选框,当您 为代码构造生成 PHPDoc 块时,可以按照定义的顺序自动对 PHPDoc 选项卡进行排序。

  • 使用 "添加"按钮"移除"按钮 在列表中添加或删除 PHPDoc 选项卡条目。

  • 使用 向上按钮向下按钮 来排列 PHPDoc 选项卡条目的顺序。

代码转换

在此选项卡中,配置在执行自动代码转换时应用的代码样式。

条目

描述

将True/False 常量转换为

选择所需选项,以在大写或小写中显示 truefalse 常量。

将Null 常量转换为

选择所需的选项,以便将 null 常量显示为大写或小写。

将else if/elseif 转换为

选择所需选项,使得 else ifelseif 常量统一地显示为 else ifelseif

对'use' 语句排序

选择所需的选项,以便在您 优化导入时将 use 语句按字母顺序或长度排序。

在形参列表中的最后一个形参后添加逗号

选择此复选框,会在参数列表中的最后一个参数后插入逗号。

选择 当有多行时 选项以符合 PER 编码风格 2.0 ,并在列表位于单行时跳过添加尾随逗号。

允许在 PHP 8.0 及以后的语法中使用。

在闭包use 列表中的最后一个变量后添加逗号

选择此复选框以在闭包 use 列表的最后一个变量后插入尾随逗号。

选择 当有多行时 选项以符合 PER 编码风格 2.0 ,并在列表位于单行时跳过添加尾随逗号。

允许在 PHP 8.0 及以后的语法中使用。

在函数调用中的最后一个实参后添加逗号

选择此复选框,函数调用中的最后一个参数后将插入一个尾随逗号。

选择 当有多行时 选项以符合 PER 编码风格 2.0 ,并在列表位于单行时跳过添加尾随逗号。

在最后一个match arm 后添加一个逗号

选择此复选框,将在 match 表达式的最后一个分支后插入尾随逗号。

数组/列表声明样式

  • 强制短声明样式 :勾选此复选框,以在重格式化期间让 IntelliJ IDEA 用 [] 替换数组声明中的 array() 结构。

    当复选框被取消选中后,重排格式后保持数组声明中的传统字面样式。

  • 在多行数组中的最后一个元素之后添加逗号 :选中此复选框以使 IntelliJ IDEA 在多行数组声明的最后一项后自动插入逗号,以符合所需的编码标准,例如 Symfony 编码标准

如需更多信息,请参考 Arrays。 语法

代码生成

在此选项卡中,配置执行某些 代码生成重构程序时要应用的代码样式。

条目

描述

变量命名样式

选择所需选项,以在 混合 案例, camelCasesnake_case 中统一显示生成的变量。

属性默认可见性

选择所需选项,以自动前缀生成的类属性,使用 privateprotectedpublic 可见性修饰符

所选选项将相应地影响 提取字段 重构,对类构造器调用的 更改签名 重构,以及 初始化字段 的意图动作。

Getter/Setter 样式

在此区域,使用提供的选项自定义 生成的 getters 和 setters

  • Getter/Setter 顺序 :请选择,哪些构造应该先出现 - getters 还是 setters。

  • 命名样式 :为生成的获取器或设置器选择命名方案,即是 camelCase 还是 snake_case

注释代码

在此区域中,配置适用于注释的代码样式选项。

  • 行注释在第一列 :选中此复选框,可以使行注释从第一列开始,不做任何缩进。 请注意,行注释字符后不会添加额外的空白空间。 复选框默认为选中状态。

    当复选框未选中时,行注释将从所选要注释的代码块中的最小缩进开始。

  • 在行注释开始处添加空格 :勾选此复选框将在行注释字符和被注释行的第一个字符之间插入空格。

安排

在此选项卡中,根据您的偏好定义一组规则来 重新排列您的 PHP 代码

条目

描述

分组规则

使用此区域来设置分组规则。

  • 保持getter 和 setter 在一起

    选择此复选框,以维持 getter 和 setter 方法一起。 默认情况下,此复选框已被选中。

  • 保持重写方法在一起

    选择此复选框以按类和接口将重写的方法分组。 在 订单 列表中,选择 保持排序按名称排序 选项。

  • 保持依赖方法在一起

    选中此复选框以将依赖方法组合在一起。 在 订单 列表中,选择 深度排序优先宽度排序优先 选项。 前者会按照嵌套层次结构来排列方法;后者会将来自同一嵌套级别的兄弟方法组合在一起。

    class foo { public function parent() { $this->child1(); $this->child2(); } private function child1() { $this->nested1(); } private function nested1() { $this->nested2(); } private function nested2() { } private function child2() { } }
    class foo { public function parent() { $this->child1(); $this->child2(); } private function child1() { $this->nested1(); } private function child2() { } private function nested1() { $this->nested2(); } private function nested2() { } }

匹配规则

在此区域定义元素顺序,这是一组规则的列表,每个规则有一组匹配项,如修饰符或类型。

  • "添加"按钮 :使用此按钮来添加规则。 空规则 区域已打开。

  • “添加区段规则”按钮 :使用此按钮来添加一个段落规则。 部分规则允许您将方法或变量移动到您定义的部分中。

    例如,您可以创建以下节规则:

    一条匹配规则

    安排后,类中的方法将按照创建的部分规则重新排列,并被注释所包围:

    //methods start public function test() {} private function a() { return 1; } static function r() {} //methods end
  • "移除"按钮 :使用此按钮从列表中移除规则。

  • 编辑按钮 :使用此按钮编辑现有规则。 要查看此按钮,请导航至您想要编辑的规则并点击按钮。 在弹出的窗口中,修改规则字段。

  • 上移按钮 向下移动按钮 :使用这些按钮将选定的规则上移或下移。

空规则

使用这个区域创建新的匹配规则,或编辑已有的规则。 您可以从以下筛选器中选择:

  • 类型 :使用此过滤器为您的规则选择类或方法。

    请注意,双击类型关键字将否定条件。

  • 修饰符 :使用此过滤器来选择规则的修饰符类型。

    请注意,点击两次修饰符关键字会否定该条件。

  • 名称 :使用此字段来在规则中指定条目名称。 此筛选器仅匹配条目名称,例如字段名称、方法名称、类名称等。 该过滤器支持正则表达式,并使用 标准语法。 匹配是针对整个名称进行的。

  • 订单 :使用此列表来选择规则的排序顺序。 当多个元素使用相同的匹配规则时,此选项非常有用。 在这种情况下,选择 保持顺序 将保持在重排之前设置的相同顺序,选择 按名称排序 将按照它们的名称对相同匹配规则的元素进行排序。

  • 別名 :此选项显示在 规则别名定义 对话框中定义的别名。 您可以删除不需要的部分。

按字母顺序排序" 按钮

当您从 订单 列表中选择 Order by Name时,会出现此图标。 图标表示此规则中的项目按字母顺序排序。

最后修改日期: 2025年 4月 24日