PHP-CS-Fixer:格式化你的PHP代码
简介
良好的代码规范可以提高代码可读性,团队沟通维护成本。最推荐大家遵守的是 php-fig(PHP Framework Interop Group) 组织定义的 PSR-1 、 PSR-2 两个。不了解的同学可以先通过链接点击过去阅读下。
这个工具的作用就是按照 PSR-1 和 PSR-2 的规范格式化你的代码。
安装
PHP需求:PHP最小版本5.3.6。
本地安装
安装很简单,下载php-cs-fixer.phar文件就行了。官方地址是:
http://get.sensiolabs.org/php-cs-fixer.phar
国内的朋友如果下载很慢,可以使用百度云:
链接: http://pan.baidu.com/s/1qWUTd5y 密码: yith
Composer方式安装
如果你还不了解Composer,请点击链接查看。
新建composer.json
{
"require" :{
"fabpot/php-cs-fixer":"*"
},"config": {
"secure-http": false
}
}
运行:
composer update
稍等片刻,下载完成:目录生成了vendor文件夹。
设置全局:
export PATH="$PATH:$HOME/.composer/vendor/bin"
注意,composer安装的与本地方式安装后调用的执行文件是不一样的。本地安装执行的是php-cs-fixer.phar;composer安装的执行的是php vendor\fabpot\php-cs-fixer\php-cs-fixer。
homebrew安装
$ brew install homebrew/php/php-cs-fixer
如何使用
命令行运行:
php-cs-fixer
会给出很多帮助提示。
使用 fix 指令修复文件夹或文件的代码风格
php php-cs-fixer.phar fix /path/to/dir
php php-cs-fixer.phar fix /path/to/file
选项:
--format 输出文件格式,支持txt、xml
--verbose
--level 应用哪种PSR类型。支持psr0、psr1、psr2。默认是psr2
--dry-run 显示需要修复但是没有修复的代码
php php-cs-fixer.phar fix /path/to/project --level=psr0
php php-cs-fixer.phar fix /path/to/project --level=psr1
php php-cs-fixer.phar fix /path/to/project --level=psr2
php php-cs-fixer.phar fix /path/to/project --level=symfony
示例:
$ php php-cs-fixer.phar fix test.php
1) test.php
Fixed all files in 0.290 seconds, 4.250 MB memory used
有一些要注意的地方是,php-cs-fixer 因为是在不破坏相容性的前提下修正的,所以有些 方法命名 的规则就无法修。不过比起手动修正,可以省下不少时间。
更多使用方式参见 Usage。
使用.php_cs文件
在一些开源框架中都看到了 .php_cs 文件。这个文件便是php-cs-fixer的格式化配置。
官方是这么描述的:
Instead of using command line options to customize the fixer, you can save the configuration in a .php_cs file in the root directory of your project.
如何使用.php_cs?
$ php php-cs-fixer fix --config-file .php_cs test.php
Loaded config from ".php_cs"
1) test.php
Fixed all files in 0.242 seconds, 4.250 MB memory used
使用--config-file加载.php_cs文件。文件内容详情见文末。
升级
php php-cs-fixer.phar self-update
或者
$ sudo php-cs-fixer self-update
composer方式:
$ ./composer.phar global update fabpot/php-cs-fixer
brew方式:
$ brew upgrade php-cs-fixer
StyleCI介绍
当我们使用 PHP-CS-Fixer 让我们现有的代码规范化之后,我们怎么确保以后开发的代码,以及别人 pr 的代码都能正确的符合代码风格规范呢?
StyleCI 是一个 Laravel5 项目,功能实现也是由 PHP-CS-Fixer 驱动。
它可以自己分析你项目的 pull request,并且在你 merge 前显示出分析的结果。
该工具没有具体使用过,下面是它的官网,感兴趣的同学可以看看。
官方网站:https://styleci.io/
相关资源
PHP Coding Standards Fixer--FriendsOfPHP
https://github.com/FriendsOfPHP/PHP-CS-Fixer
使用 PHP-CS-Fixer 自动规范化你的 PHP 代码_PHPHub - PHP & Laravel的中文社区
https://phphub.org/topics/547
现在写 PHP,你应该知道这些 - Scholer 的 PHP 之路 - SegmentFault
https://segmentfault.com/a/1190000003844380
Basic php-cs-fixer rules
https://github.com/XiaoLer/php-develop-standards/blob/master/php-cs-fixer-rules.md
.php_cs内容参考
<?php
$header = <<<EOF
This file is part of the PHP CS utility.
(c) Fabien Potencier <fabien@symfony.com>
This source file is subject to the MIT license that is bundled
with this source code in the file LICENSE.
EOF;
Symfony\CS\Fixer\Contrib\HeaderCommentFixer::setHeader($header);
return Symfony\CS\Config\Config::create()
// use default SYMFONY_LEVEL and extra fixers:
->fixers(array(
'header_comment',
'long_array_syntax',
'ordered_use',
'php_unit_construct',
'php_unit_strict',
'strict',
'strict_param',
))
->finder(
Symfony\CS\Finder\DefaultFinder::create()
->exclude('Symfony/CS/Tests/Fixtures')
->in(__DIR__)
)
;
PHP-CS-Fixer:格式化你的PHP代码的更多相关文章
- Submine Text3格式化HTML/CSS/JS代码
Submine Text3格式化HTML/CSS/JS代码需要安装插件,步骤如下: 1.打开菜单--->首选项---->Package Control,输入 install package ...
- 如何格式化被压缩的JS代码以方便阅读
本文分两部分: 1.转载部分 2.个人补充部分 1.主题内容转载83,http://www.madeby83.com/unzip-the-js-code.html 我们经常可以看到一些网站,把所需的j ...
- Sublime text 3 如何格式化HTML/css/js代码
Sublime Text 3 安装Package Control 原来Subl3安装Package Control很麻烦,现在简单的方法来了 一.简单的安装方法 使用Ctrl+`快捷键或者通过Vi ...
- JS数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)
最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改 之前的版本是本人疏忽 真对不住大家了!现在已经做了修改 如果还有不完善的地方 请大家多多指教! 1. 支持 ...
- json格式化显示样式js代码分享
最近开发中需要在页面展示json.特整理了下代码,送给大家,希望能帮到有同样需求的朋友们. 代码: <html> <script src="http://cdn.bootc ...
- Sublime Text格式化HTML JS CSS代码
Sublime Text是开发Hybrid应用的神器,但是有时候对糟糕的代码格式很懊恼,尤其是团队成员比较多,并且代码风格不是很统一的时候.幸好有可用的格式化插件,比较好用的就是HTML-CSS-JS ...
- vscode 如何格式化vue(template)html代码 , 保持标签属性不换行
微软的vscode 真心强大 , electron 框架写的 , 用js写的桌面应用 , 有能力的话大家可以分析一下人家的源码 , 反正我是看不了 , 太牛掰了 在一次跟新后我发现莫名奇妙的些在组件( ...
- HTML-学习笔记(文本格式化,引用,计算机代码)
HTML 可定义很多供格式化输出的元素,比如粗体和斜体字. <b>定义粗体字体 <p>这是一段<b>粗体字体</b>通过标签定义</p> & ...
- sublime text3格式化html,css,js代码
需要安装HTML/CSS/JS prettify插件. 安装步骤:首选项 -> Package Control -> Install Package -> HTML-CSS-JS P ...
随机推荐
- 使用Safari远程调试iOS设备网页
最近在做HTML 5游戏时,发布到手机上访问网页总是莫名其妙出现问题,苦于没有remote debug功能一直没有查找到问题. 这边博客详细介绍了iOS, Android, Windows Phone ...
- 关于session和token
最近做的项目是全平台的,需要给移动端做后台,有了许多改变,如是使用token而不是session.一开始我无法理解为什么不用session,看了很多文章以后才有一定了解. 例如在ios端, ...
- MySQL Table is marked as crashed 解决方法
MYSQL数据表出现问题,提示: ERROR 144 (HY000): Table './dpt/dpt_production' is marked as crashed and last (auto ...
- 总结一下使用react-native的一些入门级重要点
经过多方的协调沟通,我们决定至4.1日起,停止向新用户透出该服务:今年10.15以后,老用户也停止该服务(具体表现是网站上传APK-Android或者URL-iOS入口会下掉,已经发版的App,SDK ...
- R语言数据处理利器——dplyr简介
dplyr是由Hadley Wickham主持开发和维护的一个主要针对数据框快速计算.整合的函数包,同时提供一些常用函数的高速写法以及几个开源数据库的连接.此包是plyr包的深化功能包,其名字中的字母 ...
- 分析Linux内核创建一个新进程的过程
一.原理分析 1.进程的描述 进程控制块PCB——task_struct,为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct ...
- Html总结及日志目录
Html就是超文本标记语言的简写,是最基础的网页语言,代码都是由标签所组成,不用区分大小写. 1. Html代码由<html>开始</html>结束.里面由头部分<hea ...
- MFC学习随笔(2)
在MFC中,有时需要多个类之间传递信息,一个共通的头文件是个不错的选择.如果在头文件中直接声明一个变量的话,势必会报出一个错误: error LNK2005: "struct my_glob ...
- jqurey 中dialog未定义问题
$(function () { $('#btnIndustry').click(function () { $.dialo ...
- 奇妙的动态代理:EF中返回的对象为什么序列化失败
今天有如鹏的学生遇到一个问题:把一个对象保存到Session中(进程外Session)后,Web服务器重启,当从Session读取这个对象的时候报错,提示是一个“T_Users”后面跟着一大串数字的类 ...