PHP Coding Standards Fixer (PHP CS Fixer)

- php 코딩 표준화 도구

https://github.com/FriendsOfPHP/PHP-CS-Fixer - 9.9k
- v2.18.3 , 2021.03

- 설치

composer global require friendsofphp/php-cs-fixer

- 경로 추가

%APPDATA%\Composer\vendor\bin

- 코드 수정

php-cs-fixer fix src

//--------------------------------------------
< 설정 >
.php_cs 파일 옵션 해설

<?php
// https://mlocati.github.io/php-cs-fixer-configurator/
// https://cs.symfony.com/doc/rules/index.html
return PhpCsFixer\Config::create()
    ->setIndent(str_pad('', 4)) // 들여쓰기 크기
    ->setRules([
        'concat_space' => ['spacing' => 'one'], // 문자열 합칠때 빈칸 처리 ,  .

        //-----------------
        // 기본 설정
        '@PSR2' => true,
        'array_indentation' => true, //배열 들여쓰기
        //'array_syntax' => ['syntax' => 'short'], //배열 변경 array() => []
        'combine_consecutive_unsets' => false, //unset() 합치기
        'method_separation' => true, //함수 사이를 1줄로 조정
        'no_multiline_whitespace_before_semicolons' => false, //줄사이를 1줄이하로 조정
        'single_quote' => false, //따옴표를 작은 따옴표로 변경

        'binary_operator_spaces' => [//비교 연산자 빈칸 처리
            'align_double_arrow' => false,
            'align_equals' => false,
        ],
        // 'blank_line_after_opening_tag' => true, // <?php 태그 다음에 빈줄 추가
        // 'blank_line_before_return' => true,//return 전에 빈줄 추가
        'braces' => [//중괄호 {} 처리
            'allow_single_line_closure' => true, //1라인 함수 허용
            //'allow_single_line_anonymous_class_with_empty_body' => false, //
            //'allow_single_line_closure' => false, //
            //'position_after_anonymous_constructs' => 'same', //
            //'position_after_functions_and_oop_constructs' => 'next',//괄호를 함수선언 다음에 위치
        ],
        'cast_spaces' => true, //형변환 예 (int) 에 빈칸 처리
        /* 'class_definition' => [
            'singleLine' => false,
            'multiLineExtendsEachSingleLine' => false,
            'singleItemSingleLine' => false,
        ], */

        'declare_equal_normalize' => true, //declare()내부 빈칸처리
        'function_typehint_space' => true, //함수 인자 타입 빈칸처리
        'hash_to_slash_comment' => true, //주석 변경 # -> //
        'include' => true, //include ,require 관련 빈칸 처리
        'lowercase_cast' => true, //형변환 소문자
        // 'native_function_casing' => true,//내부함수 소문자
        // 'new_with_braces' => true,//new 다음 괄호 추가 , new X()
        // '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' => [//빈줄 삭제
            'curly_brace_block',
            'extra',
            'parenthesis_brace_block',
            'square_brace_block',
            'throw',
            //'use',
        ],
        'switch_case_space' => true, //switch의 case 뒤 콜론 사이 빈칸 삭제
        //'switch_continue_to_break' => true,//switch내의 continue를 break로 변경

        // 'no_leading_import_slash' => true,// 맨앞 슬래쉬 제거 use \Bar; -> use Bar;
        'no_leading_namespace_whitespace' => true, //namespace 앞 빈칸 제거
        // 'no_mixed_echo_print' => array('use' => 'echo'), // echo, print => echo로 변경
        'no_multiline_whitespace_around_double_arrow' => true, // '=>' 사이에 공간 삭제

        //3
        // 'no_short_bool_cast' => true, // !! => (bool)
        '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, // array() 마지막 콤마 제거

        //'no_unneeded_control_parentheses' => ['break','continue'],//필요없는 () 삭제
        //'no_unused_imports' => true, //사용하지 않는 모듈 삭제 (use ...)
        'ordered_imports' => ['sort_algorithm' => 'alpha'], //모듈 정렬
        'no_whitespace_before_comma_in_array' => true, // 배열에서 콤마 앞의 빈칸 삭제,
        'no_whitespace_in_blank_line' => true, //빈줄에 빈칸 삭제
        // 'normalize_index_brace' => true,// {}=> []로 변경, $arr{$index} => $arr[$index];

        // 2
        'object_operator_without_whitespace' => true, // '->' 사이 빈칸 삭제
        // 'php_unit_fqcn_annotation' => true,// PHPUnit 주석 설정 FQCN ( Fully Qualified Class Name )
        //'pre_increment' => true,  // $a++; => ++$a;
        'return_type_declaration' => ['space_before' => 'one'], //함수 리턴 타입 빈칸 삭제
        // 'self_accessor' => true,//클래스 이름 대신 self로 변경 ,  Sample::BAR; =>  self::BAR;

        // 'short_scalar_cast' => true,//형변환 단축 , (integer) $b; => (int) $b;
        'single_blank_line_before_namespace' => true, //namespace 전에 빈칸 삭제
        //'single_class_element_per_statement' => true, //class멤버 선언시, 한줄에 1개씩 분리
        //'space_after_semicolon' => true,//세미콜론 뒤에 빈칸 삽입
        // 'standardize_not_equals' => true,// '<>' -> '!=' 변경

        //1
        'ternary_operator_spaces' => true, // 삼항연산자에 빈칸 삽입
        //'trailing_comma_in_multiline_array' => true, //여러줄 배열 마지막에 , 추가
        'trim_array_spaces' => true, //array 앞뒤 빈칸 삭제
        'unary_operator_spaces' => true, //연산자 빈칸 삭제
        'whitespace_after_comma_in_array' => true, //배열 콤마',' 뒤에 빈칸 추가

        //
        'function_declaration' => ['closure_function_spacing' => 'one'], //무명 함수 () 빈칸 , function () => function()
        'indentation_type' => true, //들여쓰기 tab -> space ?
        'no_spaces_after_function_name' => true, //함수 이름뒤에 빈칸 삭제
        'no_spaces_inside_parenthesis' => true, // () 내부 빈칸 삭제
        'not_operator_with_successor_space' => true, // (!) 뒤에 빈칸 1개 삽입

        //'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_order' => false,
        // '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,
    ])
    ->setLineEnding("\n");  //개행문자

//------------------------------------------------
//------------------------------------------------
< VS Code Extension >

https://github.com/junstyle/vscode-php-cs-fixer - 132

 

 

- 단점
  • 배열 기술시 (,) 뒤에 빈칸이 2개 이상 있는 것을 줄이지 못한다
    -> 해결방법(궁색) : 코딩시 빈칸을 1개 이하로 쓴다.
  • 주의! 라라벨 blade 파일에서 js에 적용된 블레이드 문법 충돌
    {!! !!}
반응형
Posted by codens