phpStrom 安装php代码格式化插件php-cs-fixer
<?php
/**
* 代码规范检查配置
* Date: 2019/5/7
* Time: 11:16
*/
$finder = PhpCsFixerFinder::create()
->files()
->name('*.php')
->exclude('vendor')
->in(__DIR__)
->ignoreDotFiles(true)
->ignoreVCS(true);
$fixers = [
'@PSR2' => true,
'@PHP56Migration' => true,
'@PHPUnit60Migration:risky' => true,
'@PhpCsFixer' => true,
'@PhpCsFixer:risky' => true,
'list_syntax' => ['syntax' => 'long'],
'encoding' => true, //PHP代码必须只使用没有BOM的UTF-8
'line_ending' => true, //所有的PHP文件编码必须一致
'array_syntax' => ['syntax' => 'short'], //用[]关键字来定义数组
'single_quote' => true, //简单字符串应该使用单引号代替双引号
'self_accessor' => true, //在当前类中使用 self 代替类名
'binary_operator_spaces' => ['default' => 'single_space'], //二进制运算符应按配置包含的空格 align:居中 align_single_space:默认,单空格居中 align_single_space_minimal:单空格居中且空格大于1个的时候缩减到1个 no_space:没有空格 single_space:单空格,不居中 null:不做任何改变
'include' => true, //Include/Require的时候不应该用括号扩起来,应该用空格分割
'standardize_not_equals' => true, //使用 <> 代替 !=
'no_closing_tag' => true, //关闭标签必须在 PHP 文件中去掉
'no_unused_imports' => true, //删除没用到的use
'no_singleline_whitespace_before_semicolons' => true, //禁止在关闭分号前使用单行空格
'no_empty_statement' => true, //不应该存在空的结构体
'no_extra_consecutive_blank_lines' => true,
'no_unreachable_default_argument_value' => true,
'no_blank_lines_after_class_opening' => true, //class 开标签后面不应该有空
'no_trailing_comma_in_list_call' => true, //删除list语句中多余的逗号
'no_leading_namespace_whitespace' => true, //命名空间前面不应该有空格
'no_useless_else' => true, //不需要没有用的 else 分支
'no_useless_return' => true,
'object_operator_without_whitespace' => true,
'ordered_class_elements' => true,
'ordered_imports' => true,
'phpdoc_add_missing_param_annotation' => true,
'strict_comparison' => false,
'strict_param' => false,
'concat_space' => ['spacing' => 'one'], //连接字符是否需要空格,可选配置项 none:不需要 one:一个空格
'simplified_null_return' => true,
'pre_increment' => false,
'align_multiline_comment' => ['comment_type' => 'phpdocs_only'], //每行多行DocComments必须有一个星号(PSR-5),并且必须与第一行对齐
'blank_line_after_namespace' => true, //命名空间之后空一行
'blank_line_after_opening_tag' => false, //<?php 后面加一个空行
'blank_line_before_statement' => ['statements' => ['break', 'continue', 'declare', 'return', 'throw', 'try'],], //空行换行必须在任何已配置的语句之前,可选配置项:break,case,continue,declare,default,die,do,exit,for,foreach,goto,if,include,include_once,require,require_once,return,switch,throw,try,while,yield
'cast_spaces' => ['space' => 'none',], //类型转换的时候,是否需要在中间加空格 none:不加 single:加一个空格
'class_keyword_remove' => false, //::class关键字移除,转成字符串
'combine_consecutive_issets' => true, //当多个isset通过&&连接的时候,合并处理
'combine_consecutive_unsets' => true, //当多个unset使用的时候,合并处理
'declare_equal_normalize' => ['space' => 'single'], //declare语句中的等于号是否需要空格 none:不需要 single:一个空格
'elseif' => true, //用elseif来代替else if
'full_opening_tag' => true, //php代码必须用 <?php 或者 <?= 不能是其他
'function_declaration' => ['closure_function_spacing' => 'one'], //必包函数关键字function后面是否需要空格 one:一个空格 none:不需要
'function_typehint_space' => true, //在闭包函数的参数类型约束的时候,是否需要空格
'general_phpdoc_annotation_remove' => ['annotations' => [],], //phpdoc中应该忽略的注解
'heredoc_to_nowdoc' => true, //当一个heredoc里面没有变量当时候,可以转成 nowdoc
'linebreak_after_opening_tag' => true, //在<?php 标签所在的行不允许存在代码
'lowercase_cast' => true, //数据类型转换必须小写
'lowercase_constants' => true, //true, false, null 这几个php常量必须为小写
'lowercase_keywords' => true, //PHP关键字必须小写
'new_with_braces' => true, //使用 new 关键字创建的所有实例必须后跟括号
'no_blank_lines_after_phpdoc' => true, //phpdoc 后面不应该有空行
'no_empty_comment' => true, //不应该存在空注释
'no_empty_phpdoc' => true, //不应该存在空的 phpdoc
'no_leading_import_slash' => true, //use 语句中取消前置斜杠
'no_mixed_echo_print' => ['use' => 'echo'], //不允许混合使用echo和print语句
'no_multiline_whitespace_around_double_arrow' => true, //运算符 => 不应被多行空格包围
'no_null_property_initialization' => true, //属性不能用显式初始化 null
'no_short_echo_tag' => true, //用 <?php echo 来代替 <?=
'no_spaces_after_function_name' => true, //在函数或者方法定义的时候,不允许函数和左括号之间有空格
'no_spaces_inside_parenthesis' => true, //在左括号后面不能有空格,在右括号之前不能有空格
'no_trailing_comma_in_singleline_array' => true, //PHP 单行数组最后不应该有逗号
'no_trailing_whitespace' => true, //删除非空行末尾的尾随空格
'no_trailing_whitespace_in_comment' => true, //注释或 PHPDoc 中必须没有尾随空格
'no_unneeded_control_parentheses' => ['statements' => ['break', 'clone', 'continue', 'echo_print', 'return', 'switch_case', 'yield']], //删除控制语句周围不需要的括号 可选配置项: break,clone,continue,echo_print,return,switch_case,yield
'no_unneeded_curly_braces' => true, //删除不需要的花括号
'no_unneeded_final_method' => true, //终态类一定不能有终态方法
'no_whitespace_before_comma_in_array' => true, //在数组声明中每个逗号前不得有空格
'not_operator_with_space' => false, //逻辑 NOT 运算符(!)应该具有前导和尾随空格
'not_operator_with_successor_space' => false, //逻辑 NOT 运算符(!)应该有一个尾随空格
'phpdoc_align' => ['tags' => ['param', 'return', 'throws', 'type', 'var']], //给定 phpdoc 标签的所有项目必须左对齐或垂直对齐 tags配置项: param,property,return,throws,type,var,method
'phpdoc_annotation_without_dot' => true, //PHPDoc 注释描述不应该是一个句子,即不能以句号结尾
'phpdoc_indent' => true, //Docblock 应与文档主题具有相同的缩进
'phpdoc_no_empty_return' => true, //@return void 和@return null 注释应该 PHPDoc 的被省略
'phpdoc_no_package' => false, //@package 和@subpackage 注释应该 PHPDoc 的被省略
'phpdoc_order' => false, //应该对 PHPDoc 中的@param 注释进行排序,以便首先@throws 注释,然后是@return 注释,然后是注释
'phpdoc_separation' => true, //PHPDoc 中的注释应该组合在一起,以便相同类型的注释紧跟在一起,并且不同类型的注释由单个空行分隔
'phpdoc_single_line_var_spacing' => true, //单行@var PHPDoc 应该有适当的间距
'phpdoc_summary' => false, //PHPDoc 摘要应以句号,感叹号或问号结尾
'phpdoc_var_without_name' => true, //@var 和@type 注释不应包含变量名称
'single_blank_line_at_eof' => true, //没有结束标记的 PHP 文件必须始终以单个空行换头结束
'single_line_after_imports' => true, //每个命名空间使用必须在它自己的行上,并且在 use 语句块之后必须有一个空行
'space_after_semicolon' => ['remove_in_empty_for_expressions' => true,], //分号后修复空格 remove_in_empty_for_expressions:是否应删除空 for 表达式的空格
'switch_case_semicolon_to_colon' => true, //case 之后应该是冒号而不是分号
'switch_case_space' => true, //删除 case 冒号和值之间的额外空格
'ternary_operator_spaces' => true, //三元操作符周围有标准空格
'trim_array_spaces' => true, //数组应该像函数/方法参数一样格式化,不带前导或尾随单行空格
'unary_operator_spaces' => true, //一元运算符应放在其操作数旁边
'whitespace_after_comma_in_array' => true, //在数组声明中,每个逗号后必须有一个空格
'nullable_type_declaration_for_default_null_value' => true,
'multiline_whitespace_before_semicolons' => ['strategy' => 'no_multi_line',], //在结束分号之前禁止多行空格或将分号移动到新行
'space_after_semicolon' => ['remove_in_empty_for_expressions' => true,], //分号后修复空格
];
return PhpCsFixerConfig::create()
->setRiskyAllowed(true)
->setRules($fixers)
->setFinder($finder)
->setUsingCache(true);