文档章节

php代码格式化工具 php-cs-fixer的使用

2688
 2688
发布于 2016/07/20 13:46
字数 694
阅读 501
收藏 0

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

输入图片说明

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

© 著作权归作者所有

共有 人打赏支持
2688

2688

粉丝 11
博文 56
码字总数 33491
作品 0
深圳
高级程序员
私信 提问
使用 PHP-CS-Fixer 自动规范化你的 PHP 代码

良好的代码规范可以提高代码可读性,团队沟通维护成本。最推荐大家遵守的是 php-fig(PHP Framework Interop Group) 组织定义的 PSR-1 、 PSR-2 两个。不了解的同学可以先通过连接点击过去阅...

dingdayu
2016/11/22
86
0
代码及提交规范

使用 php-cs-fixer 工具确保编码风格的统一 项目的根目录下存在 .php_cs 文件,定义了一些基本的编码风格,在项目根目录运行 即可统一代码风格 每一个代码提交必须是一个完整的提交,即不应该...

techlivezheng
2015/01/26
5
0
sublime检查PHP代码规范插件phpcs

PHP Code Sniffer 简称 phpcs,用来检查你写的 PHP 是否符合 PSR-2,若完全符合则沒有任何结果输出,若有任何错误将显示错误报告。这适合帮我们检查 PHP 是否符合 PSR-2。 sublime-phpcs Pr...

angkee
2018/06/25
0
0
2016 正确 sublime安装PHPcs PHPcodesniffer代码规范提示插件,修正网上部分不详细描述

对你有助请点赞,请顶,不好请踩------送人玫瑰,手留余香! ------------------- 14:37 2016/3/21 2016 正确 sublime安装PHPcs PHPcodesniffer代码规范提示插件,修正网上部分不详细描述 插...

兔子想飞
2016/03/21
0
0
PHP CS Fixer —— PHP 代码标准修复工具

PHP CS Fixer 是代码标准修复工具,当你想把 PHP 编码标准定义为 PSR-1 和 PSR-2 文件标准时,它能修复你代码中的大部分问题。

oschina
2015/07/26
49
0

没有更多内容

加载失败,请刷新页面

加载更多

JFinal开发的旅游线路营销Saas平台演示系统我部署了一个

今天部署了一个旅游线路营销管理系统的演示版: 演示地址:http://lvyou.jfinalxueyuan.com 演示账号:(暂时只给一个门店版的吧,批发商和总部的如果需要 演示看看 单独联系我微信:1876673...

山东-小木
今天
2
0
如何学习大数据技术

学习大数据技术,首先要明确大数据的概念。 大数据的概念作者认为有如下几点: 1.数据的来源多样性。例如关系数据库+文本+excel等 2.数据量大。TB级别的数据。 3.业务应用领域。实时性高与实...

董黎明
今天
3
0
开箱即用(out-of-box)的Redis序列号生成器,不用再写任何代码,你值得拥有

先看整体效果 把简单的东西“傻瓜化”是软件开发追求的目标之一。请看下图: 左边是在 application.yml 里配置了3个生成器,右边可以直接注入到代码中使用,注意,不用写任何代码。这酸爽。 ...

花漾年华
今天
1
0
算法我也不知道有没有下一个---一个题目的开端(索引堆与图)

病痛了一周,折磨来折磨去,终于还是平静了下来,现在能把上周末"贯穿"学到的最后一个基础数据结构的知识给沉淀沉淀了。也是即将再单位分享的东西:图论。这东西,想当年大二,学校的时候,只...

心中的理想乡
今天
1
0
Synchronized和Lock的区别

锁类型: 可重入锁:在执行对象中所有的同步方法时,不必再次去获取锁 可中断锁:在等待获取锁过程中可中断 读写锁:对线程的读写分为两个部分,读过程中多线程可一起访问readLock,写过程中...

最胖的瘦子
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部