PhpStorm作为PHP开发领域常用的集成开发环境,自带了完善的代码格式化功能,能够帮助开发者快速将杂乱的PHP代码整理成规范、易读的格式,减少手动调整排版的时间消耗。

PhpStorm格式化PHP代码的快捷键
PhpStorm为代码格式化提供了默认的快捷键,不同操作系统下的快捷键有所差异,具体可以参考下表:
| 操作系统 | 格式化当前文件快捷键 | 格式化选中代码块快捷键 |
|---|---|---|
| Windows/Linux | Ctrl+Alt+L | 先选中代码,再按Ctrl+Alt+L |
| macOS | Command+Option+L | 先选中代码,再按Command+Option+L |
如果按下快捷键后没有触发格式化操作,可能是快捷键被其他软件占用,或者PhpStorm的快捷键方案被修改过,可以通过后续介绍的设置路径查看和修改对应快捷键。
手动触发格式化操作
除了使用快捷键,也可以通过菜单栏手动触发格式化功能,操作步骤非常简单:
- 打开需要格式化的PHP文件,或者先选中需要格式化的代码块
- 点击顶部菜单栏的Code选项
- 在下拉菜单中选择Reformat Code选项即可完成格式化
如果需要批量格式化整个项目或者指定目录下的所有PHP文件,可以在项目目录树中选中对应目录,再执行上述菜单操作,PhpStorm会自动遍历目录下所有PHP文件进行格式化。
自定义PHP代码格式化规则
默认的格式化规则可能不符合团队的代码规范,这时候可以自定义格式化规则,具体操作步骤如下:
打开格式化设置页面
点击顶部菜单栏的File,选择Settings(Windows/Linux)或者PhpStorm下的Preferences(macOS),在弹出的设置窗口中依次展开Editor - Code Style - PHP选项,即可进入PHP代码格式化规则设置页面。
常用规则配置项
在PHP代码风格设置页面,可以对各类格式化规则进行调整,常用的配置项包括:
- Tabs and Indents:设置缩进方式,是采用Tab缩进还是空格缩进,以及缩进的字符数,比如可以设置为4个空格作为一级缩进
- Spaces:设置各类语法结构前后的空格规则,比如函数名和括号之间是否需要空格,运算符前后是否需要空格等
- Wrapping and Braces:设置换行和花括号的位置规则,比如类、函数的花括号是放在行尾还是新起一行,长代码行是否自动换行等
- Blank Lines:设置代码中的空行规则,比如类成员之间、函数之间需要保留多少空行
导出和导入规则
如果团队有统一的代码格式规范,可以将配置好的规则导出为文件,分享给其他开发者导入使用,避免重复配置:
在PHP代码风格设置页面右上角,点击Export按钮可以将当前规则导出为.xml文件,其他开发者在同样的设置页面点击Import Scheme - IntelliJ IDEA code style XML,选择导出的文件即可导入规则。
格式化操作示例代码
以下是一个格式前的杂乱PHP代码示例:
<?php
class User{public $name;public $age;function __construct($name,$age){$this->name=$name;$this->age=$age;}function getInfo(){return "姓名:".$this->name.",年龄:".$this->age;}}
$user=new User("张三",20);echo $user->getInfo();
使用PhpStorm格式化后,代码会变成如下规范格式:
<?php
class User
{
public $name;
public $age;
function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
function getInfo()
{
return "姓名:" . $this->name . ",年龄:" . $this->age;
}
}
$user = new User("张三", 20);
echo $user->getInfo();
常见问题说明
格式化后部分代码逻辑发生变化怎么办?格式化功能只会调整代码的排版格式,不会修改代码的逻辑内容,如果出现逻辑异常,大概率是原代码存在语法错误,格式化过程中触发了语法修正,建议先检查原代码的语法问题。
如果格式化时想要忽略某段代码,可以在代码块前后添加注释标记,告诉PhpStorm不要格式化这段内容:
<?php // @formatter:off $test = [1,2,3,4,5]; // @formatter:on
添加上述注释后,PhpStorm格式化代码时会跳过两个注释之间的内容,保持原有排版。