PHPStorm默认折叠class、function、if、for、while、namespace、docblock等结构,但纯{}语句块不折叠;需在设置中启用PHP相关折叠项并重启生效。
PHPStorm 会自动对 class、function、if、for、while、namespace、docblock 等结构启用折叠,但具体行为取决于语言注入设置和代码风格。不是所有大括号块都默认可折叠——比如纯 {} 包裹的语句块(无关键字引导)通常不会被识别为可折叠区域。
进入 Settings / Preferences → Editor → General → Code Folding,展开 PHP 节点,勾选或取消勾选以下常用项:
Class declarations:控制 class、interface、trait 的折叠Function declarations:影响 function 和 method(含 static、private 等修饰符)Comments:折叠 PHPDoc(/** */)和行内注释(//)需单独勾选Import statements:折叠 use 语句组(注意:单个 use 不会折叠,必须是连续多行)Array initializer:对长数组字面量(如 ['a' => 1, 'b' => 2])启用折叠⚠️ 修改后需重启编辑器或重新打开文件才生效部分设置(尤其是 Array initializer)。
折叠功能依赖光标位置,不是全局开关:
Ctrl + Shift + -(Windows/Linux)或 Cmd + Shift + -(macOS)Ctrl + Shift + + 或 Cmd + Shift + +
Ctrl + Shift + NumPad -(需数字小键盘)Ctrl + Shift + NumPad +
Ctrl + Alt + T → 选择 Fold Comments and Headers
注意:NumPad 快捷键在笔记本上可能失效,建议外接键盘或改用菜单操作(Code → Folding → …)。
PHPStorm 支持用特殊注释标记自定义折叠范围,比依赖语法结构更灵活:
//region 数据处理逻辑
$data = array_filter($input, function($v) { return $v > 0; });
$result = array_map(fn($x) => $x * 2, $data);
//endregion也可用 PHPDoc 风格:
/**
* @fold 数据校验流程
*/
if ($user->isGuest()) {
throw new PermissionException();
}
// @endfold这类标记需确保启用了 Region comments 折叠项(在 Code Folding 设置中),且注意大小写敏感(@fold 有效,@FOLD 无

实际项目中,过度依赖自定义折叠容易让团队成员困惑;优先用语义清晰的函数拆分,再辅以折叠控制。