PhpStorm 2025.2 Help

代码样式。 PHP

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

设置自...

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

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

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

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

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

制表符和缩进

项目

描述

使用制表符

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

智能制表符

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

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

    禁用 Smart Tabs 的代码样式

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

制表符大小

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

缩进

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

连续缩进

指定延续前一行的行的缩进,使其清楚地成为同一语句或代码块的一部分。 当单个语句太长而无法放在一行时,会使用续行缩进。

空行时保持缩进

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

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

Indent code in PHP tags

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

空格

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

在括号前

项目

描述

Function declaration parentheses

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

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

Function call parentheses

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

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

Anonymous function parentheses

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

$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 initializer parentheses

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

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

Arrow function parentheses

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

$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;

Multiplicative operators (*, /, %, **)

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

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

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

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

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

Unary additive operators (+,-,++,--)

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

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

Concatenation (.)

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

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

Object access operator (->)

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

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

Null coalescing operator (??)

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

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

Assignment in declare statement

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

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

在左大括号之前

项目

描述

类左大括号

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

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

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

Function left brace

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

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

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

'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 { }

项目

描述

中括号

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

Brackets around variable/expression

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

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

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

Array initializer parentheses

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

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

分组圆括号

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

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

Function declaration parentheses

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

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

Function call parentheses

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

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) { }

<?= and ?>

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

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

在三元运算符 (?:) 中

项目

描述

在'?' 前

在'?' 后

在':' 前

在':' 后

Between '?' and ':'

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

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

$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;

Before colon in return type/After colon in return type

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

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

Around | in union type

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

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

Before colon in named argument/After colon in named argument

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

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

Before colon next to type declaration in backed enum/After colon next to type declaration in backed enum

如果选中,空格将自动插入到 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'; }

Before unary Not (!)/After unary Not (!)

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

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

包装和大括号

常用选项

项目

描述

强制换行位置

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

键入时换行

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

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

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

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

视觉参考线

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

在重新格式化时保持

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

项目

描述

换行符

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

注释在第一列

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

控制语句在同一行

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

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() { }

大括号的位置

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

选项

描述

行尾

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

下一行(如果换行)

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

下一行

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

下一行(移位)

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

下一行,每次移位

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

要配置空类或函数 / 方法中大括号的位置,请使用 Place braces for empty classes on one linePlace braces for empty functions/methods on one line 复选框。

扩展/实现列表

项目

描述

常见的封装选项

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

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

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

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

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

多行时对齐

如果选中, 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) {}

Keep ')' and '{' on one line

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

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);

Place '()' for constructor

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

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

  • Always :总是会添加大括号。

  • Never :括号总是被移除。

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

Align named arguments

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

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();

Place ';' on new line

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

$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()' 语句

项目

描述

New line before first element

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

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

New line after last element

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

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

强制加大括号

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

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

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

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

'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() 语句

项目

描述

常见的封装选项

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

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

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

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

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

多行时对齐

当选择了该复选框,且清除了 New line before first element 复选框后, 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 循环的大括号引入方法:

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

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

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

'while()' 语句

项目

描述

强制加大括号

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

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

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

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

"do ... while()" 语句

项目

描述

强制加大括号

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

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

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

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

'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");

Align consecutive assignments

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

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

类属性/常量组

项目

描述

Align properties in columns

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

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

Align constants

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

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

Align enum cases

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

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 ];

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

Align key-value pairs

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

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

New line before first element

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

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

New line after last element

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

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

修改符列表

项目

描述

在修饰符列表后换行

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

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

函数返回类型

项目

描述

Return type on new line

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

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

评论

项目

描述

Align inline comments

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

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

PHP 开启选项卡

项目

描述

New line after '<?php' tag

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

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

'匹配'表达式

项目

描述

Align 'match' arm bodies

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

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

Heredoc 和 nowdoc

项目

描述

Place on the same line as variable declaration

如果选中,PhpStorm 将根据 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" 组

项目

描述

常见的封装选项

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

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

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

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

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

属性

项目

描述

常见的封装选项

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

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

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

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

参数的属性

项目

描述

常见的封装选项

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

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

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

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

空白行

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

项目

描述

保持最大的空白行

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

最小的空白行

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

PHPDoc

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

项目

描述

Keep blank lines

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

Blank line before the first tag

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

Blank lines around parameters

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

Wrap long lines

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

Align parameter/property names

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

Align tag comments

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

PHPDoc '@param' spaces

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

Generated PHPDoc tags

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

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

  • Place ‘null’ in types :选择此复选框可让产品为 可空参数和返回类型生成注释并选择应放置 null 指示的位置(即, string|nullnull|string)。

Sort PHPDoc tags

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

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

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

代码转换

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

项目

描述

Convert True/False constants to

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

Convert Null constant to

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

Convert else if/elseif to

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

Sort 'use' statements

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

Add a comma after last parameter in parameter list

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

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

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

Add a comma after last variable in closure use list

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

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

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

Add a comma after last argument in function call

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

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

Add a comma after last match arm

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

Array/List Declaration Style

  • Force short declaration style :勾选此复选框,以在重格式化期间让 PhpStorm 用 [] 替换数组声明中的 array() 结构。

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

  • Add a comma after last element in multiline array :选中此复选框以使 PhpStorm 在多行数组声明的最后一项后自动插入逗号,以符合所需的编码标准,例如 Symfony 编码标准

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

代码生成

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

项目

描述

Variable Naming Style

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

Properties Default Visibility

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

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

Getters/Setters style

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

  • Getters/Setters order :请选择,哪些构造应该先出现 - getters 还是 setters。

  • Naming style :为生成的获取器或设置器选择命名方案,即是 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
  • "移除"按钮 :使用此按钮从列表中移除规则。

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

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

空规则

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

  • Type :使用此筛选器为您的规则选择构造函数、方法或属性。

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

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

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

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

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

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

按字母顺序排序" 按钮

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

最后修改日期: 2025年 9月 26日