php-cs-fixer简介

php-cs-fixer 是个代码格式化工具,格式化的标准是 PSR-1、PSR-2 以及一些 symfony 的标准。

安装

官方网站 github 有两个版本 v1 和 v2 ,其中 v1 需要php 5.3.6 版本以上, v2 需要 php 5.6 版本以上。升级说明 你可以直接下载最新版本封装好的 phar 包:php-cs-fixer.phar 以下都是以v2版本为例子

unix:

wget http://cs.sensiolabs.org/download/php-cs-fixer-v2.phar -O php-cs-fixer
chmod a+x php-cs-fixer
mv php-cs-fixer /usr/local/bin/php-cs-fixer

windows

下载php-cs-fixer
把php-cs-fixer 放入php目录,然后把php安装目录加入系统PATH变量

使用

/usr/local/bin/php-cs-fixer

codeMrror显示的代码格式化 代码格式化工具_php

fix就是最基本的命令

# 格式化某个目录
php-cs-fixer fix /path/to/dir
# 格式化某个文件
php-cs-fixer fix /path/to/file

--rules 选项用于对项目或者文件的规则控制:

php-cs-fixer fix /path/to/file
php-cs-fixer fix /path/to/project --rules=@PSR2
php-cs-fixer fix /path/to/dir --rules=line_ending,full_opening_tag,indentation_type
php-cs-fixer fix /path/to/dir --rules=-full_opening_tag,-indentation_type,-@PSR1

默认情况下执行的是 PSR-1 和 PSR-2 的所有选项
rules 后面支持逗号(,),减号(-)增加规则和排除多个规则
更多使用方式 手册

项目实践

一般在团队开发项目中,会通过一个配置来保证代码质量,在项目根目录添加一个 .php_cs 文件的方式实现。 下面是一个例子

$finder = PhpCsFixer\Finder::create()
    ->files()
    ->name('*.php')
    ->exclude('vendor')
    ->in(__DIR__)
    ->ignoreDotFiles(true)
    ->ignoreVCS(true);
$fixers = array(
    '@PSR2' => true,
    'single_quote'  => true, //简单字符串应该使用单引号代替双引号;
    'no_unused_imports' => true, //删除没用到的use
    'no_singleline_whitespace_before_semicolons' => true, //禁止只有单行空格和分号的写法;
    'self_accessor'             => true, //在当前类中使用 self 代替类名;
    'binary_operator_spaces'    => true, //二进制操作符两端至少有一个空格;
    'no_empty_statement' => true, //多余的分号
    'no_extra_consecutive_blank_lines' => true, //多余空白行
    'no_blank_lines_after_class_opening' => true, //类开始标签后不应该有空白行;
    'include' => true, //include 和文件路径之间需要有一个空格,文件路径不需要用括号括起来;
    'no_trailing_comma_in_list_call'  => true, //删除 list 语句中多余的逗号;
    'no_leading_namespace_whitespace' => true, //命名空间前面不应该有空格;
    'standardize_not_equals' => true, //使用 <> 代替 !=;
   );
return PhpCsFixer\Config::create()
    ->setRules($fixers)
    ->setFinder($finder)
    ->setUsingCache(false);

编辑器插件

手动对代码文件fix效率还是比较低的,所以还是需要自动化,常用的ide的插件

  • Atom (设置->安装->搜索 atom-beautify) 以下步骤以 atom-beautify 0.30.5 为例
  • atom-beautify打开设置中的Executables 找到 PHP-CS-Fixer 输入 php-cs-fixer 的 完整路径
  • atom-beaufity 的 php 选项的 Deault beautifier 设置中选择 PHP-CS-Fixer 并打开 Beautify On Save选项
  • PHP-CS-Fixer VERSION 选择 2
  • 其它选项都默认,这样设置的话,就会默认遵循根目录下的.php_cs 规则了
  • NetBeans (工具->插件->可用插件->搜索CS Fixer)
  • Vim

参考文档

php-cs-fixer