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. 设置 ConfigurationLocal (这一般是默认选项)

  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
(= ̄ω ̄=)··· 暂无内容!

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