您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # php-cs-fixer怎么使用
## 一、工具简介
PHP-CS-Fixer 是一个开源的PHP代码格式化工具,能够自动检测和修复不符合编码规范的PHP代码。它支持PSR-1、PSR-2、PSR-12等主流PHP编码标准,也可以根据项目需求自定义规则。
### 核心特点
- 支持批量处理整个项目或单个文件
- 提供200+内置修复规则
- 可配置自定义规则集
- 与主流IDE和CI/CD工具集成
- 支持缓存机制提升执行效率
## 二、安装方法
### 1. 全局安装(推荐)
通过Composer全局安装:
```bash
composer global require friendsofphp/php-cs-fixer
安装完成后将Composer的全局vendor目录添加到PATH环境变量:
export PATH="$PATH:$HOME/.composer/vendor/bin"
验证安装:
php-cs-fixer --version
composer require --dev friendsofphp/php-cs-fixer
wget https://cs.symfony.com/download/php-cs-fixer-v3.phar -O php-cs-fixer
chmod +x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer
php-cs-fixer fix /path/to/file.php
php-cs-fixer fix /path/to/project
| 参数 | 说明 | 
|---|---|
--dry-run | 
只显示需要修复的文件而不实际修改 | 
--diff | 
显示修复前后的差异 | 
--rules=@PSR12 | 
指定使用的规则集 | 
--using-cache=no | 
禁用缓存 | 
--verbose | 
显示详细输出 | 
--allow-risky=yes | 
允许执行有风险的规则 | 
在项目根目录创建 .php-cs-fixer.php 或 .php-cs-fixer.dist.php:
<?php
$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__)
    ->exclude('vendor');
return PhpCsFixer\Config::create()
    ->setRules([
        '@PSR12' => true,
        'strict_param' => true,
        'array_syntax' => ['syntax' => 'short'],
    ])
    ->setFinder($finder);
'rules' => [
    // 基础规则集
    '@PSR12' => true,
    
    // 数组使用短语法
    'array_syntax' => ['syntax' => 'short'],
    
    // 类属性必须声明可见性
    'visibility_required' => ['elements' => ['property', 'method']],
    
    // 方法参数类型提示
    'declare_strict_types' => true,
    
    // 删除多余空行
    'no_extra_blank_lines' => true,
    
    // 方法链调用换行
    'method_chaining_indentation' => true,
]
return PhpCsFixer\Config::create()
    ->setRules([
        '@Symfony' => true,
        '@PHP80Migration' => true,
        // 自定义覆盖规则
        'concat_space' => ['spacing' => 'one'],
    ]);
$finder->notPath('src/Debug/')
      ->notName('*.test.php');
return PhpCsFixer\Config::create()
    ->setRules([
        '@PSR12' => true,
        '@PHP80Migration:risky' => true,
    ]);
继承抽象规则类:
use PhpCsFixer\AbstractFixer;
use PhpCsFixer\FixerDefinition\FixerDefinition;
use PhpCsFixer\Tokenizer\Tokens;
class MyCustomFixer extends AbstractFixer {
    public function getDefinition() {
        return new FixerDefinition(
            'Description of your fixer.',
            []
        );
    }
    
    public function isCandidate(Tokens $tokens) {
        return $tokens->isTokenKindFound(T_STRING);
    }
    
    protected function applyFix(\SplFileInfo $file, Tokens $tokens) {
        // 实现修复逻辑
    }
}
安装PHP-CS-Fixer扩展后配置settings.json:
{
    "php-cs-fixer.executablePath": "${extensionPath}/php-cs-fixer",
    "php-cs-fixer.onsave": true,
    "php-cs-fixer.rules": "@PSR12",
    "php-cs-fixer.config": ".php-cs-fixer.dist.php"
}
php-cs-fixerfix $FileDir$/$FileName$ --rules=@PSR12$ProjectFileDir$name: PHP-CS-Fixer
on: [push, pull_request]
jobs:
  php-cs-fixer:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install PHP-CS-Fixer
        run: composer require --dev friendsofphp/php-cs-fixer
      - name: Run PHP-CS-Fixer
        run: vendor/bin/php-cs-fixer fix --dry-run --diff --verbose
在 .git/hooks/pre-commit 中添加:
#!/bin/sh
files=$(git diff --cached --name-only --diff-filter=ACM | grep ".php$")
if [ "$files" != "" ]; then
    vendor/bin/php-cs-fixer fix $files
    git add $files
fi
清除缓存:
php-cs-fixer fix --using-cache=no
使用 --stop-on-violation 参数定位第一个冲突点:
php-cs-fixer fix --stop-on-violation
php-cs-fixer fix src/ tests/ --path-mode=intersection
--dry-run,逐步修复问题| 工具 | 特点 | 适用场景 | 
|---|---|---|
| PHP-CS-Fixer | 修复能力强,规则丰富 | 需要自动修复的场景 | 
| PHP_CodeSniffer | 检查为主,修复有限 | 需要详细报告的场景 | 
| PHPCBF | PHPCS的修复工具 | 与PHPCS配合使用 | 
| Prettier-PHP | 专注于代码样式 | 前端团队统一工具链 | 
PHP-CS-Fixer 是现代化PHP项目维护代码质量的利器。通过合理配置和团队规范,可以显著提升代码可读性和维护效率。建议从基础规则集开始,逐步根据项目特点定制规则,最终形成团队的编码标准。
注意:本文基于php-cs-fixer v3.0版本编写,不同版本可能存在差异。建议定期升级工具版本以获得最新功能和规则支持。 “`
这篇文章共计约3050字,涵盖了php-cs-fixer的安装、配置、使用技巧到高级集成等完整内容,采用Markdown格式编写,包含代码块、表格等结构化元素,便于阅读和理解。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。