PHP CS Fixer 的使用及 PHP Storm 配置说明

PHP CS Fixer

介绍

这是什么?

PHP Coding Standards Fixer (PHP CS Fixer) 工具用于修复您的代码以遵循标准。无论是想遵循 PSR-1、PSR-2等中定义的 PHP 编码标准还是其他社区驱动的标准,如 Symfony 标准。您还可以通过配置定义(团队)标准。

它能做什么?

它可以使您的代码符合现代化标准

为什么要用它?

如果已经在用 linter 来识别代码中的编码标准问题,那么您就会知道手动修复它们是乏味的,尤其在大型项目中。

该工具不仅可以检测到它们,还可以修复它们。

安装

本文档基于 Windows 系统讲述

安装 PHP CS Fixer 的推荐方法是在专用的 Composer 中使用项目中的 composer.json 文件,例如在 tools/php-cs-fixer 目录中

$ d: # 进入 d 盘
$ cd project
$ composer require friendsofphp/php-cs-fixer

更多的安装方法,参考安装说明

用法

假设您已经安装上面的说明安装了 PHP CS Fixer,您看也i运行一下命令来修复 app 目录中的 PHP 文件。

$ d: # 进入 d 盘
$ cd project
$ ./vendor /bin/php-cs-fixer fix src

如果需要应用该工具不支持的代码样式,您可以创建自定义规则

编辑器集成

PHP Storm

基于 Windows 环境下的 PHP Storm 2021.2 版本

自动检测
  1. 打开编辑器设置:点击 File->Settings 或使用快捷键 Ctrl+Alt+S

  2. 点击 PHP -> Quality Tools -> PHP CS Fixer

  3. 设置 Configuration为 Local (这一般是默认选项)

  4. 点击 …
    PHP CS Fixer 的使用及 PHP Storm 配置说明

  5. 配置 PHP CS Fixer path 项,指定 PHP CS Fixer 可执行文件,按照上方示例安装,则路径为 D:\project\vendor\bin\php-cs-fixer.bat

  6. 点击 Validate 验证是否正确,路径配置正确底部会提示 OK…

  7. 点击 PHP CS Fixer inspection
    PHP CS Fixer 的使用及 PHP Storm 配置说明

  8. 勾选 PHP CS Fixer validation 后面的复选框

  9. 在 Options 设置中 勾选 Allow risky rules for built-in rulesets 然后选择Ruleset(你想遵循的标准),然后点击OK,依次 退出并应用 apply 配置即可
    PHP CS Fixer 的使用及 PHP Storm 配置说明

  10. 此时编辑代码后,编辑器就会提示语法问题,点击 PHP CS Fixer: fix the whole file 会修复该文件
    PHP CS Fixer 的使用及 PHP Storm 配置说明

批处理修复
  1. 同样是进入配置

  2. 依次点击 Tools -> External Tools

  3. 点击 + 按钮,新增外部工具
    PHP CS Fixer 的使用及 PHP Storm 配置说明

    Name:工具名称(php-cs-fixer)

    Group:工具分组(默认)

    Desciption:描述(随便写)

    Tool Settings

    ​ Program:可执行文件路径(D:\project\vendor\bin\php-cs-fixer.bat 按照个人配置自行修改)

    ​ Arguments:参数(fix $FileDir$ 使用 $$ 包裹的是 PHPStorm 变量,会自动替换)

    ​ Working directory:项目路径($Projectpath$)

  4. 点击 OK 保存即可。

  5. 此时已经配置完成,回到代码编辑的区域,点击导航 Tools -> External Tools -> php-cs-fixer
    PHP CS Fixer 的使用及 PHP Storm 配置说明
    PHP CS Fixer 的使用及 PHP Storm 配置说明

  6. 此时可以看到控制台的打印记录,表示修复了两个文件,看文件代码已经修复了规范问题

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!