vscode配置php开发代码规范
在 VSCode 中,PHP 也有类似 JS 的 ESLint 的工具来统一代码规范,核心是通过 PHP_CodeSniffer(PHPCS,负责代码规范检查) + PHP-CS-Fixer(负责自动修复规范) 配合 VSCode 扩展实现,流程和 ESLint 很像
先安装 PHP 工具本身
用 Composer 全局安装 PHPCS 和 PHP-CS-Fixer(需要先安装 Composer):
# 全局安装PHP_CodeSniffer(检查规范)
composer global require squizlabs/php_codesniffer
# 全局安装PHP-CS-Fixer(自动修复规范)
composer global require friendsofphp/php-cs-fixer安装 VSCode 对应的扩展
在 VSCode 扩展商店搜索安装:
「PHP_CodeSniffer」:关联 PHPCS 实现规范检查
「PHP CS Fixer」:关联 PHP-CS-Fixer 实现自动修复
配置 VSCode 的 settings.json
打开 VSCode 的设置(Ctrl+,),点击右上角「打开设置 (JSON)」,添加以下配置(根据系统调整工具路径):
{
// 配置PHPCS的路径(Mac/Linux是~/.composer/vendor/bin/phpcs,Windows是C:\Users\你的用户名\AppData\Roaming\Composer\vendor\bin\phpcs.bat)
"phpcs.executablePath": "~/.composer/vendor/bin/phpcs",
// 指定代码规范(常用PSR-12)
"phpcs.standard": "PSR12",
// 配置PHP-CS-Fixer的路径
"php-cs-fixer.executablePath": "~/.composer/vendor/bin/php-cs-fixer",
// 保存文件时自动修复规范
"php-cs-fixer.onSave": true
}验证「php-cs-fixer 本身能运行」
打开终端执行:
# Windows
php-cs-fixer.bat --version
# Mac/Linux
php-cs-fixer --version项目根目录创建 .php-cs-fixer.dist.php
示例如下:
<?php
$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
->name('*.php')
->notName('*.blade.php')
->ignoreDotFiles(true)
->ignoreVCS(true);
return (new PhpCsFixer\Config())
->setRules([
'@PSR12' => true,
// 核心:数组缩进对齐(3.x版本靠这个规则保证数组格式)
'array_indentation' => true,
// 仅保留3.x支持的braces规则配置
'braces' => [
'allow_single_line_anonymous_class_with_empty_body' => true,
'allow_single_line_closure' => true,
'position_after_functions_and_oop_constructs' => 'next',
'position_after_control_structures' => 'next', // 控制结构(if/for等)后换行
],
'indentation_type' => true, // 强制空格缩进,禁止Tab
'no_trailing_whitespace' => true, // 清理行尾空格
'trim_array_spaces' => true, // 清理数组内多余空格
'normalize_index_brace' => true, // 统一数组索引格式
])
->setFinder($finder)
->setIndent(' ') // 强制4个空格缩进(保证左侧对齐)
->setLineEnding("\n"); // 统一换行符手动触发格式化(快捷键 / 命令)
用命令面板触发
按 Ctrl+Shift+P,输入 PHP CS Fixer: Fix this file,回车就能手动格式化当前 PHP 文件。
自定义快捷键(更方便)
打开快捷键设置(Ctrl+K Ctrl+S),搜索 php-cs-fixer,给「Fix this file」绑定一个快捷键(比如 Ctrl+Alt+F),之后按这个键就能快速格式化。
vscode提示,php有多个格式化程序
选 “php cs fixer junstyle.php-cs-fixer” 这个选项~
用 VSCode「工作区设置」(推荐,适配多项目)
这是最贴合多项目开发的方式 —— 给每个项目单独配置cwd,切换项目时自动生效,无需手动改配置:
按 Ctrl+Shift+P,输入 Preferences: Open Workspace Settings (JSON)(打开工作区设置,区别于全局设置);
在弹出的[项目名].code-workspace文件里,只配置当前项目的cwd
示例如下:
{
"settings": {
"intelephense.environment.documentRoot": "D:\\wwwroot\\PHP\\PHP84\\youhu-laravel-api-12\\public",
"intelephense.codeLens.references.enable": true,
"intelephense.maxMemory": 100000,
// 1. 强制开启php-cs-fixer保存自动格式化(必须是true)
"php-cs-fixer.onSave": true,
// 2. 关闭VSCode自带的格式化,避免冲突(关键!)
"editor.formatOnSave": false,
"php-cs-fixer.cwd": "d:\\wwwroot\\PHP\\PHP84\\youhu-laravel-api-12",
// 保留之前的其他配置(路径、onSave等)
"phpcs.executablePath": "C:/Users/MECHREVO/AppData/Roaming/Composer/vendor/bin/phpcs.bat",
"phpcs.standard": "PSR12",
"php-cs-fixer.executablePath": "C:/Users/MECHREVO/AppData/Roaming/Composer/vendor/bin/php-cs-fixer.bat",
}
}如果ctrl+s保存不生效
通过命令面板打开 "键盘快捷方式 (JSON)"(搜索 "Preferences: Open Keyboard Shortcuts (JSON)")
在打开的keybindings.json文件中添加以下代码:
[
{
"key": "ctrl+s",
"command": "runCommands",
"args": {
"commands": [
"workbench.action.files.save", // 先保存文件
"php-cs-fixer.fix" // 再执行php-cs-fixer格式化
]
},
"when": "editorLangId == php && editorTextFocus && !editorReadonly" // 只对PHP文件生效
}
]保存文件,回到 PHP 文件测试:修改代码后按Ctrl+S,文件将自动保存并格式化
