php-cs-fixer 使用

php-cs-fixer 使用

《php-cs-fixer 使用》

代码规范想必写代码的都听说过,每种语言都有自己的代码规范,这些规范也可能不尽相同,公司之间,甚至团队之间都存在着差异,再甚至团队中的成员也是人个一套,这都是比较常见的情况。但是,作为一个团队,代码规范还是尽可能的相似,或一致比较好。这样的代码比较整齐,更加容易维护。但单纯靠编码的时候刻意注意来形成这种规范还是比较困难的,因为一般来讲,个人都倾向于看自己的代码顺眼。作为世界上最好的语言,php当然是不存在这样的问题的,因为我们有php-cs-fixer这种工具来帮助我们,所以我们一般不是很担心上面说的这些问题。。。 下面我们看看怎么使用这个神奇的东西.

安装php-cs-fixer

安装方式非常简单,如下

#mac
brew install php-cs-fixer
#ubuntu
sudo apt-get install php-cs-fixer
#manual
wget https://cs.sensiolabs.org/download/php-cs-fixer-v2.phar -O php-cs-fixer
sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

使用操作

命令也非常简单,基本操作如下,做多呢–help 看一下就可以了。但是我想说的是,我本来也这么认为,但是我发现这样操作根本没有任何作用,我找来了2个 php文件,格式化前后竟然惊人的一直,原来那个样,格式化之后还是那个样,没有任何变化。于是我开始找原因,但找了很久都没能解决问题。我看了几个php-cs-fixer的基本参数,基本上都尝试了,但最终都没能成功格式化一个php文件,可以说是非常失败。最后,万般无奈的我,跑到了全球最大的同性交友网站上找答案。 官方的repo中果然有很多内容,比搜索引擎中博客的内容丰富多了,里面见到了php-cs-fixer 的配置文件这种东西,然而对于纯新手,写这些配置未免有点无从下手,而 这正是我感觉到如此困难的原因。

#fixer 的一些帮助,这个帮助比较神奇,不同的子参数有不同的帮助,所以想看php-cs-fixer 怎么样,需要看 fix 参数的帮助
php-cs-fixer -h

# 会给出一个比较详细的说明,告诉你 php-cs-fixer fix 需要使用的一些参数
php-cs-fixer fix

## 可以工作的命令是这个, .php-cs 是你自己的配置,见文末的配置文件,格式化的时候,带上你的配置文件 --config 参数
php php-cs-fixer fix --config=/path/.php-cs /path/to/code

这里是一个非常全的配置文件,这个文件非常重要。

参考资料

  1. 官网(希望看了官网,不要喷我的这篇文章是垃圾)

LAST BUT NOT LEAST [最后,但非常重要的事]

这或许才是我写这篇文章的目的,就是这个配置文件。创建一个文件,内容如下,可以仔细阅读以下里面的内容,里面规定了一些细节的规范选项。 你可以微调,可以注释或者取消注释一些部分。来实现你自己的预期。有了这个文件,就可以使用这个命令来格式化你的php文件了。 再强调一次。

php php-cs-fixer fix --config=/path/.php-cs /path/to/code
<?php

return PhpCsFixer\Config::create()
    ->setRules(array(
        '@PSR2' => true,
        'array_indentation' => true,
        'array_syntax' => array('syntax' => 'short'),
        'combine_consecutive_unsets' => true,
        'method_separation' => true,
        'no_multiline_whitespace_before_semicolons' => true,
        'single_quote' => true,

        'binary_operator_spaces' => array(
            'align_double_arrow' => false,
            'align_equals' => false,
        ),
        // 'blank_line_after_opening_tag' => true,
        // 'blank_line_before_return' => true,
        'braces' => array(
            'allow_single_line_closure' => true,
        ),
        // 'cast_spaces' => true,
        // 'class_definition' => array('singleLine' => true),
        'concat_space' => array('spacing' => 'one'),
        'declare_equal_normalize' => true,
        'function_typehint_space' => true,
        'hash_to_slash_comment' => true,
        'include' => true,
        'lowercase_cast' => true,
        // 'native_function_casing' => true,
        // 'new_with_braces' => false,
        // 'no_blank_lines_after_class_opening' => true,
        // 'no_blank_lines_after_phpdoc' => true,
        // 'no_empty_comment' => true,
        // 'no_empty_phpdoc' => true,
        // 'no_empty_statement' => true,
        'no_extra_consecutive_blank_lines' => array(
            'curly_brace_block',
            'extra',
            'parenthesis_brace_block',
            'square_brace_block',
            'throw',
            'use',
        ),
        'no_leading_import_slash' => true,
        // 'no_leading_namespace_whitespace' => true,
        // 'no_mixed_echo_print' => array('use' => 'echo'),
        'no_multiline_whitespace_around_double_arrow' => true,
        // 'no_short_bool_cast' => true,
        // 'no_singleline_whitespace_before_semicolons' => true,
        'no_spaces_around_offset' => true,
        // 'no_trailing_comma_in_list_call' => true,
        // 'no_trailing_comma_in_singleline_array' => true,
        'no_unneeded_control_parentheses' => true,
        'no_unused_imports' => true,
        'no_whitespace_before_comma_in_array' => true,
        'no_whitespace_in_blank_line' => true,
        // 'normalize_index_brace' => true,
        'object_operator_without_whitespace' => true,
        // 'php_unit_fqcn_annotation' => true,
        // 'phpdoc_align' => true,
        // 'phpdoc_annotation_without_dot' => true,
        // 'phpdoc_indent' => true,
        // 'phpdoc_inline_tag' => true,
        // 'phpdoc_no_access' => true,
        // 'phpdoc_no_alias_tag' => true,
        // 'phpdoc_no_empty_return' => true,
        // 'phpdoc_no_package' => true,
        // 'phpdoc_no_useless_inheritdoc' => true,
        // 'phpdoc_return_self_reference' => true,
        // 'phpdoc_scalar' => true,
        // 'phpdoc_separation' => true,
        // 'phpdoc_single_line_var_spacing' => true,
        // 'phpdoc_summary' => true,
        // 'phpdoc_to_comment' => true,
        // 'phpdoc_trim' => true,
        // 'phpdoc_types' => true,
        // 'phpdoc_var_without_name' => true,
        // 'pre_increment' => true,
        // 'return_type_declaration' => true,
        // 'self_accessor' => true,
        // 'short_scalar_cast' => true,
        'single_blank_line_before_namespace' => true,
        // 'single_class_element_per_statement' => true,
        // 'space_after_semicolon' => true,
        // 'standardize_not_equals' => true,
        'ternary_operator_spaces' => true,
        // 'trailing_comma_in_multiline_array' => true,
        'trim_array_spaces' => true,
        'unary_operator_spaces' => true,
        'whitespace_after_comma_in_array' => true,
    ))
    //->setIndent("\t")
    ->setLineEnding("\n")
;
点赞

Leave a Reply

Your email address will not be published.