php-cs-fixer实践
PSR 规范
具体中文文档 https://laravel-china.org/docs/psr 在编码中我们一般严格遵守PSR-2规范即可
PSR-0 自动加载规范(已弃用)
PSR-1 基础编码规范
PSR-2 编码风格规范
PSR-3 日志接口规范
PSR-4 自动加载规范
PSR-5 PHPDoc 标准(未通过)
PSR-6 缓存接口规范
PSR-7 HTTP 消息接口规范
PSR-8 Huggable 接口(未通过)
PSR-9 项目安全问题公示(未通过)
PSR-10 项目安全上报方法(未通过)
PSR-11 容器接口
PSR-12 编码规范扩充(审阅中)
PSR-13 超媒体链接 已完成
PSR-14 事件分发器(未通过)
PSR-15 HTTP 请求处理器 已完成
PSR-16 缓存接口
废话不多说,能看它的文章的自然应知道它是做什么的。
一,安装,不多说,github上给的很清楚 ,给个composer的:
composer global require friendsofphp/php-cs-fixer
开始时提示切换到特定目录,执行切换即可。
地址:https://github.com/FriendsOfPHP/PHP-CS-Fixer
当然最简单的是到这里下载phar包 https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases
然后在windows 创建php-cs-fixer.bat
php php-cs-fixer.phar fix --config=.php_cs.dist %~sf1
pause
mas\linux 创建 php-cs-fixer
#!/bin/sh
/usr/local/php7/bin/php -d allow_url_fopen=On -d detect_unicode=Off /usr/local/php7/bin/php-cs-fixer-v2.phar $*
以上未经测试,推荐使用composer安装。
二,使用,
用法也很简单,最基本的命令参数就是 fix
,直接执行时会尽可能多的根据默认标准格式化代码:
# 格式化目录 如果是当前目录的话可以省略目录
php-cs-fixer fix /path/to/dir
# 格式化文件
php-cs-fixer.phar fix /path/to/file
--verbose
选项用于展示应用了的规则,默认是文本(txt
)格式。
--level
选项用于控制需要使用的规则层级:
php-cs-fixer fix /path/to/project --level=psr0
php-cs-fixer fix /path/to/project --level=psr1
php-cs-fixer fix /path/to/project --level=psr2
php-cs-fixer fix /path/to/project --level=symfony
默认情况下执行的是 PSR-2 的所有选项以及一些附加选项(主要是 symfony 相关的)。还有一些属于『贡献级别』的选项,你可以通过 --fixers
选择性的添加,--fixers
的多个条件要用逗号分开:
php-cs-fixer fix /path/to/dir --fixers=linefeed,short_tag,indentation
如果有需要的话也可以使用 -name_of_fixer
采取黑名单的方式设定禁用哪些选项。如果同时设定了 --fixers
和 -name_of_fixer
,前者的优先级更高。
同时使用 --dry-run
和 --diff
命令可以显示出需要修改的汇总,但是并不实际修改。
通过以下方式也可以查看有哪些内容是会修改的,但是并不实际改动文件:
cat foo.php | php-cs-fixer fix --diff -
github上也很清楚。。给个win中cmd的例子,是使用composer安装的,安装方式不同使用方式不同(当然php-cs-fixer安装地址会不同) :
C:\Users\Mr.V\AppData\Roaming\Composer\vendor\bin\php-cs-fixer.bat fix D:\lnmp\vhosts\xx.com\index.php
三,说下phpstorm的配置,Atom自行百度吧,虽然Atom开源免费但是真心觉得没phpstorm好用
路径:File->settings->Tools->External Tools
Name自定义即可。
Program 如果是composer安装则选择composer下php-cs-fixer.bat所在的位置,Win下一般为:C:\Users\Mr.V\AppData\Roaming\Composer\vendor\bin\php-cs-fixer.bat ,linux/mac下一般为:~/.composer/vendor/bin/php-cs-fixer 如果路径有出入可自行搜索。
Arguments
--verbose fix "$FileDir$/$FileName$" --verbose为显示详细信息,如有没有修改及修改内容。 fix 后面跟的为phpstorm内置的变量,望文知意即可。在这个中可以配置--config=C:\Users\XXX\AppData\Roaming\Composer\vendor\php-cs-fixer\diff\src\.php ,.php_cs.dist 是官方提供的格式化标准,其实就是php文件,自己可以从官方github仓库中下载,–config后面是这个文件的存放地址,根据你的实际环境来。
fix $FileDir$/$FileName$ --config=C:\Users\XXX\AppData\Roaming\Composer\vendor\php-cs-fixer\diff\src\.php,默认会查找项目根目录下的.php-cs文件
Working directory 工作目录,同样是phpstorm内置变量,$ProjectFileDir$
下方的 Advanced Options 第一项为执行fix后刷新,第二项为输出fix信息到编辑器的console控制台。其他项不用配置。
可以配置一个快捷键方便使用
最后项目根目录可以放置github上提供的.php-cs文件,基本能满足需求,不爽的可以自己定义它,看github修改吧。
格式化选项
psr0 [PSR-0]
PSR-0 的路径和命名空间标准encoding [PSR-1]
文件必须是不带 BOM 的 UTF-8 编码;short_tag [PSR-1]
只能使用<?php ?>
和<?= ?>
两种 PHP 代码标签;braces [PSR-2]
所有语句块都必须包含在花括号内,且位置以及缩进是符合标准的;class_definition [PSR-2]
class、trait、interfaces 关键字和名称之间只能有一个空格;elseif [PSR-2]
使用elseif
替代else if
;eof_ending [PSR-2]
文件必须以空白行结尾;function_call_space [PSR-2]
调用函数和方法时,函数名和方法名与参数扩展之间不能有空格;function_declaration [PSR-2]
函数声明时空格的使用需要符合 PSR-2;indentation [PSR-2]
代码必须使用四个空格缩进而不是制表符;line_after_namespace [PSR-2]
命名空间的声明后必须有一个空白行;linefeed [PSR-2]
所有 PHP 文件都只能使用 LF(Unix) 结尾;lowercase_constants [PSR-2]
PHP 常量 true、false 和 null 必须使用小写;lowercase_keywords [PSR-2]
PHP 关键字必须都是小写;method_argument_space [PSR-2]
方法声明及调用时,参数之间的逗号前不能有空格,逗号后必须有一个空格;multiple_use [PSR-2]
每个 use 只能声明一个元素;parenthesis [PSR-2]
圆括号内两侧不能有空格;php_closing_tag [PSR-2]
纯 PHP 文件必须省略?>
标签;single_line_after_imports [PSR-2]
每个 use 声明独立一行,且 use 语句块之后要有一个空白行;trailing_spaces [PSR-2]
删除非空行之后多余的空格;visibility [PSR-2]
每个属性和方法都必须指定作用域是public
、protected
还是private
,abstract
和final
必须位于作用域关键字之前,static
必须位于作用域之后;array_element_no_space_before_comma [symfony]
数组声明中,逗号之前不能有空格;array_element_white_space_after_comma [symfony]
数组声明中,逗号之后必须有一个人空格;blankline_after_open_tag [symfony]
PHP 开始标签的同一行不能有代码,且下面必须有一个空白行;concat_without_spaces [symfony]
点连接符左右两边不能有多余的空格;double_arrow_multiline_whitespaces [symfony]
=>
操作符两端不能有多个空白行;duplicate_semicolon [symfony]
删除重复的分号;empty_return [symfony]
return 语句如果没有任何返回的话直接写 return 即可(不用 return null);extra_empty_lines [symfony]
删除多余的空白行;function_typehint_space [symfony]
修正函数参数和类型提示之间的缺失的空格问题;include [symfony]
include
和文件路径之间需要有一个空格,文件路径不需要用括号括起来;join_function [symfony]
使用join
替换implode
函数;list_commas [symfony]
删除list
语句中多余的逗号;method_argument_default_value [symfony]
函数参数中有默认值的参数不能位于无默认值的参数之前;multiline_array_trailing_comma [symfony]
多行数组最后一个元素应该也有一个逗号;namespace_no_leading_whitespace [symfony]
命名空间前面不应该有空格;new_with_braces [symfony]
使用 new 新建实例时后面都应该带上括号;no_blank_lines_after_class_opening [symfony]
类开始标签后不应该有空白行;no_empty_lines_after_phpdocs [symfony]
PHP 文档块开始开始元素下面不应该有空白行;object_operator [symfony]
T_OBJECT_OPERATOR
(->
) 两端不应有空格;operators_spaces [symfony]
二进制操作符两端至少有一个空格;phpdoc_indent [symfony]
phpdoc 应该保持缩进;phpdoc_inline_tag [symfony]
修正 phpdoc 内联标签格式,使标签与后续内容始终位于一行;phpdoc_no_access [symfony]
@access
不应该出现在 phpdoc 中;phpdoc_no_empty_return [symfony]
@return void
和@return null
不应该出现在 phpdoc 中;phpdoc_no_package [symfony]
@package
和@subpackage
不应该出现在 phpdoc 中;phpdoc_params [symfony]
@param
,@throws
,@return
,@var
, 和@type
等 phpdoc 标签都要垂直对齐;phpdoc_scalar [symfony]
phpdoc 标量类型声明时应该使用int
而不是integer
,bool
而不是boolean
,float
而不是real
或者double
;phpdoc_separation [symfony]
phpdoc 中注释相同的属性应该放在一起,不同的属性之间应该有一个空白行分割;phpdoc_short_description [symfony]
phpdoc 的简要描述应该以.
、!
或?
结尾;phpdoc_to_comment [symfony]
文档块应该都是结构化的元素;phpdoc_trim [symfony]
除了文档块最开始的部分和最后的部分,phpdoc 开始和结束都应该是有内容的;phpdoc_type_to_var [symfony]
@type
需要使用@var
代替;phpdoc_types [symfony]
phpdoc 中应该正确使用大小写;phpdoc_var_without_name [symfony]
@var
和@type
注释中不应该包含变量名;pre_increment [symfony]
不应该使用++i
或--i
的用法;print_to_echo [symfony]
如果可能的话,使用echo
代替print
语句;remove_leading_slash_use [symfony]
删除use
前的空行;remove_lines_between_uses [symfony]
删除use
语句块中的空行;return [symfony]
return
之前应该有一个空行;self_accessor [symfony]
在当前类中使用self
代替类名;short_bool_cast [symfony]
bool
类型数据前不应该试用两个感叹号;single_array_no_trailing_comma [symfony]
PHP 单行数组最后一个元素后面不应该有空格;single_blank_line_before_namespace [symfony]
命名空间声明前应该有一个空白行;single_quote [symfony]
简单字符串应该使用单引号代替双引号;spaces_after_semicolon [symfony]
修复分号后面的空格;spaces_before_semicolon [symfony]
禁止只有单行空格和分号的写法;spaces_cast [symfony]
变量和修饰符之间应该有一个空格;standardize_not_equal [symfony]
使用<>
代替!=
;ternary_spaces [symfony]
三元运算符之间的空格标准化;trim_array_spaces [symfony]
数组需要格式化成和函数/方法参数类似,上下没有空白行;unalign_double_arrow [symfony]
不对其=>
;unalign_equals [symfony]
不对其等号;unary_operators_spaces [symfony]
一元运算符和运算数需要相邻;unneeded_control_parentheses [symfony]
删除控制结构语句中多余的括号;unused_use [symfony]
删除没有用到的 use 语句;whitespacy_lines [symfony]
删除空白行中多余的空格;
php-cs-fixer实践相关推荐
- php cs fixer 怎么用,php代码格式化工具 php-cs-fixer的使用
php-cs-fixer简介 php-cs-fixer 是个代码格式化工具,格式化的标准是 PSR-1.PSR-2 以及一些 symfony 的标准. 安装 官方网站 github 有两个版本 v1 ...
- php cs fixer switch,PSR规范代工厂之 php-cs-fixer 的代码合规之路
前言 编程语言都有一套专属的语法,循其法而编其码,方能被该语言的编译器识别,从而编译成低级语言,被机器识别.而语法规范不了编码风格,编码风格是由程序员决定的,程序员的思想的天马行空,也造就了风格迥异的 ...
- php cs fixer config,使用php-cs-fixer来格式化php代码
文档地址 到上面地址下载php-cs-fixer.phar这个文件 新建一个格式化配置文件(使用哪些规则对代码进行格式化)$header = << This file is part of ...
- PHP vscode 格式化扩展php cs fixer配置
PHP vscode 格式化扩展php cs fixer配置 首先在扩展商店里找到php cs fixer并且安装 安装好后点击"设置"->"扩展设置" ...
- php语法检查修复工具,代码标准修复工具 PHP CS Fixer
授权协议: MIT 开发语言: PHP 操作系统: 跨平台 软件介绍 PHP CS Fixer 是代码标准修复工具,当你想把 PHP 编码标准定义为 PSR-1 和 PSR-2 文件标准时,它能修复你 ...
- php cs fixer config,php-cs-fixer - PHP 编码格式化工具
php-cs-fixer 是个代码格式化工具,格式化的标准是 PSR-1.PSR-2 以及一些 symfony 的标准.这个工具也和 symfony.twig 等优秀的 PHP 库出自同门. 安装与更 ...
- php cs fixer.bat,在 Windows 上安裝 Sublime Text 2 搭配 PHP-CS-Fixer 套件
Note: 2014.12.22 PHP-CS-Fixer 不支援 "--level": "all" 設定了 由於近幾年來 PHP-Fig 發佈 PSR-0 ~ ...
- php cs fixer 怎么用,详解使用php-cs-fixer格式化代码
1. 安装 $ cd /usr/local/bin $ wget https://cs.symfony.com/download/php-cs-fixer-v2.phar -O php-cs-fixe ...
- php cs fixer config,php-cs-fixer
[TOC] # 使用 PHP-CS-Fixer 格式化代码 ## 项目安装 php-cs-fixer 进入到项目的 `php` 目录下: ```shell git fetch git rebase / ...
- php cs fixer,php-cs-fixer是什么
php-cs-fixer是什么? php-cs-fixer - PHP 编码格式化工具 php-cs-fixer 是个代码格式化工具,格式化的标准是 PSR-1.PSR-2 以及一些 symfony ...
最新文章
- 不兼容结构的协调——适配器模式
- todolist实现删除的功能_coc-todolist: nvim/vim 的 todolist/task 管理插件
- ubuntu下搭建tftp服务器
- 阿里云Https部署网站
- 阿里蚂蚁金服中间件(Java 4轮面试题含答案):Redis缓存+线程锁+微服务等
- 当年这个决定,让李飞飞奠定 AI 江湖的女王地位
- 新版手机浏览器_Firefox手机浏览器app下载安装_Firefox手机浏览器软件最新版免费下载...
- Linux 内存中的Cache
- mysql两表查询单个_对两个表进行单个MySQL选择查询是可能的吗?
- php 真太阳时间修正,全国真太阳时对照表
- 搜狗实验室新闻数据文本分类深度学习案例 ———Tensorflow+CNN深度学习全流程(上)
- java 拍照后加上日期水印_有什么软件能批量给照片添加拍照日期的水印?
- ComposeOptions.kotlinCompilerVersion is deprecated
- GEC6818 移植 rtl8723bu wifi驱动
- 如何才能高效的学习,99%的人不知道的高效学习法
- css怎么修改图片像素,CSS 像素图制作攻略
- Android中的单元测试
- ie退出全屏快捷键_讲解win7电脑全屏快捷键介绍
- hash:哈希表 哈希桶
- AlphaGo Zero 模型框架