PHP学习_这个php-cs-fixer编码格式化工具,你还不会用吗?

2021-09-18 0 646 百度已收录

php-cs-fixer - PHP 编码格局化东西

php-cs-fixer 是个代码格局化东西,格局化的规范是 PSR-一、PSR-2 和一些 symfony 的规范。这个东西也以及 symfony、twig 等良好的 PHP 库出自同门。

装置与更新

需求运用 PHP 5.3.6 以上的版本。

你能够间接下载封装好的 phar 包:php-cs-fixer.phar;

或许经过 wget 下载(上面的都是 OSX 以及 Linux 上的用法):

wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixer

或许经过 curl 下载:

curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer

下载实现后给可履行的权限,而后挪动到 bin 目次上面便可:

sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

如许就能够正在任何中央间接运用 php-cs-fixer 饬令来挪用了。

也能够用过 Composer 来装置:

composer global require fabpot/php-cs-fixer

假如你是 Mac 用户、homebrew 用户而且曾经 tap 过 homebrew/php 的话,也能够间接:

brew install php-cs-fixer

或许:

brew install homebrew/php/php-cs-fixer

假如后续需求更新的话:

php-cs-fixer self-update

假如是经过 homebrew 装置的:

brew upgrade php-cs-fixer

假如未将履行文件放到 bin 目次下或许正在 Windows需求运用 php php-cs-fixer.phar 替代 php-cs-fixer

用法

用法也很复杂,最根本的饬令参数便是 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 -

自界说设置装备摆设

--config 选项能够用来配置拔取目次和文件停止剖析并格局化,可是这个选项只能配置一些罕见的已经知的名目,比方 symfony:

# For the Symfony 2.3+ branch
php-cs-fixer fix /path/to/sf23 --config=sf23

已经有选项:

  • default 默许设置装备摆设

  • magento magento 名目

  • sf23 symfony 的名目

更多时分,咱们能够经过设置装备摆设文件来自界说格局化选项和搜刮的目次以及文件。自界说设置装备摆设经过正在名目根目次增加一个 .php_cs 文件的体式格局完成。

配置自身便是 PHP 代码,最初前往一个 Symfony\\CS\\ConfigInterface 的实例便可。你能够配置格局化的选项、级别、文件和目次。

上面是一个复杂的例子:

<?php

$finder = Symfony\\CS\\Finder\\DefaultFinder::create()
    ->exclude('somedir') // 疏忽 somedir
    ->in(__DIR__) // 以后目次
;

return Symfony\\CS\\Config\\Config::create()
    ->fixers(['strict_param', 'short_array_syntax']) // 增加两个选项
    ->finder($finder)
;

假如你想完整自界说格局化选项,就需求将格局化级别清空,并指定好一切需求的选项:

<?php

$finder = Symfony\\CS\\Finder\\DefaultFinder::create()
    ->in(__DIR__)
;

return Symfony\\CS\\Config\\Config::create()
    ->level(Symfony\\CS\\FixerInterface::NONE_LEVEL)
    ->fixers(['trailing_spaces', 'encoding'])
    ->finder($finder)
;

你也能够经过正在选项后面增加 - 的体式格局来禁用某些选项,比方上面这个例子没有采纳 PSR-0:

<?php

$finder = Symfony\\CS\\Finder\\DefaultFinder::create()
    ->exclude('somedir')
    ->in(__DIR__)
;

return Symfony\\CS\\Config\\Config::create()
    ->fixers(['-psr0'])
    ->finder($finder)
;

默许前提下的格局化级别是 symfony (最严厉),你能够修正这个级别:

<?php

return Symfony\\CS\\Config\\Config::create()
    ->level(Symfony\\CS\\FixerInterface::PSR2_LEVEL)
;

经过这些配置选项的组合,能够很随便的定制出本人想要的后果。

你也能够经过 --config-file 选项指定 .php_cs 文件的地位。

启用缓存能够正在后续的履行中放慢速率,经过如下办法配置:

<?php

return Symfony\\CS\\Config\\Config::create()
    ->setUsingCache(true)
;

编纂器插件

上面这些编纂器/IDE 的插件能够帮你简化格局化的任务:

  • Atom

  • NetBeans

  • PhpStorm

  • Sublime Text

  • Vim

格局化选项

  • 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]
    每一个属性以及办法都必需指定感化域是 publicprotected 仍是 privateabstract 以及 final 必需位于感化域关头字以前,static 必需位于感化域以后;

  • array_element_no_space_before_co妹妹a [symfony]
    数组申明中,逗号以前不克不及有空格;

  • array_element_white_space_after_co妹妹a [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_co妹妹as [symfony]
    删除了 list 语句中过剩的逗号;

  • method_argument_default_value [symfony]
    函数参数中有默许值的参数不克不及位于无默许值的参数以前;

  • multiline_array_trailing_co妹妹a [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 而没有是 integerbool 而没有是 booleanfloat 而没有是 real 或许 double

  • phpdoc_separation [symfony]
    phpdoc 中正文相反的属性该当放正在一同,差别的属性之间该当有一个空缺行联系;

  • phpdoc_short_description [symfony]
    phpdoc 的扼要描绘该当以 .! 或者 ? 开头;

  • phpdoc_to_co妹妹ent [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_co妹妹a [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]
    删除了空缺行中过剩的空格;

除以上这些选项之外,另有一些用户奉献的选项,这里就再也不逐个介绍了。

关于代码作风能否一致,履行甚么样的规范,每一个人、每一个团队能够都有本人的观点。这里只是介绍一下这个东西,至于若何选用,还正在于大师本人。假如是开源名目,你也能够试用一下 StyleCI。

推选进修:《PHP视频教程》

以上便是这个php-cs-fixer编码格局化东西,你还没有会用吗?的具体内容,更多请存眷酷吧易资源网别的相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

酷吧易资源网 PHP教程 PHP学习_这个php-cs-fixer编码格式化工具,你还不会用吗? https://www.kubayi.com/7693.html

常见问题

相关文章

评论
暂无评论