PhpStorm默认仅检查字符串字面量、注释和PHPDoc中的自然语言文本拼写,不检查变量名、数组键、JSON key等代码结构;需手动启用对应文件类型拼写检查并确认未被技术词典忽略。

PhpStorm 默认只检查字符串和注释里的英文拼写,变量名、数组键、JSON key、HTML 属性值等一律不查——这不是 bug,是设计行为。 想靠它揪出 seperate、recieve 这类错误,必须手动调对上下文、作用域和检查选项。
为什么 config/app.php 里的 'name' => 'My App' 不标红
因为 PhpStorm 把 PHP 数组键值对中的字符串(如 'name' 和 'My App')归为“代码结构”,不是自然语言文本。它默认只扫描三类位置:字符串字面量(即单/双引号包裹的文本)、注释、PHPDoc 块。像配置数组这种场景,哪怕内容是纯英文,也不在默认范围内。
- 验证方法:把
'My App'改成'My App // app name',后面加个注释,app和name就会被标黄(如果不在词典里) - 真正生效的典型位置:Blade 模板里的提示文字(
<p>User {{ $name }}</p>不查,但<!-- Display user name -->会查)、测试用例断言消息($this->assertEquals('User not found', $message)中的User not found会被查) - 技术词典自动忽略常见词:比如
cache、auth、env、http等,即使拼错也不会报——这是故意的,避免干扰
如何让 seperate 这类词真的被标出来
关键不是“打开拼写检查”,而是确保它作用在你写的那个具体字符串上,并且没被缓存或词典绕过。
- 先确认启用:进入
Settings > Editor > Inspections > Proofreading > Typo,勾选并设 Severity 为Typo(黄色波浪线) - 检查当前文件类型是否支持:右下角状态栏看是
PHP还是JSON;如果是JSON,得去Settings > Editor > Inspections > Proofreading手动勾选JSON对应项 - 排除缓存干扰:右键标错词 →
Spelling > Save 'seperate' to dictionary,再立刻按Ctrl + Z撤销这步,强制触发重检 - 别信“已启用”就万事大吉:某些项目里,
Typo检查可能被误设为仅作用于Comments only,需点开右侧 Options,确认Check strings已勾选
怎么让数组键、JSON key、Blade 中的 HTML 属性值也被检查
这些属于“非默认范围”,但能通过 Inspection 选项强制开启,代价是轻微性能下降(首次加载慢几秒,后续无感)。
立即学习“PHP免费学习笔记(深入)”;
- 路径:
Settings > Editor > Inspections > Proofreading > Typo > Options - 勾选
Check strings(已有)、Check keys in associative arrays(针对 PHP 数组键)、Check keys in JSON/YAML files(针对 JSON key)、Check HTML attribute values(针对title="Edit user"这类) - 注意:勾选
Check keys in associative arrays后,['label' => 'User name']中的label会被当作文本查,但User name本身仍是字符串,也会被查——一箭双雕 - 副作用:可能误标合法技术词,比如
['type' => 'auth_token']中的auth_token若不在词典里会被标,此时右键 →Save to dictionary即可
拼写错误太多?别急着关,先分清哪些该留、哪些该压
满屏波浪线不是检查器太严,而是你混用了自然语言和技术标识符。最常被忽略的其实是作用域和词典管理。
- 项目级词典比全局词典更安全:右键错词 →
Save to dictionary时,选Project dictionary而非Application dictionary,避免污染其他项目 - 弱警告(灰色虚线)默认不触发跳转:按
F2只在 Error > Warning 间跳,想连拼写一起过,得在Settings > Editor > General > Highlighting Level里选All Problems - 真正难搞的是动态生成的字符串:比如
$msg = "Error: " . $code;,PhpStorm 只能检查字面量部分,Error:会被查,但拼接后的完整语义不会——这类得靠单元测试断言覆盖



















