Skip to content

Instantly share code, notes, and snippets.

@laravel-shift
Last active October 19, 2025 03:29
Show Gist options
  • Save laravel-shift/cab527923ed2a109dda047b97d53c200 to your computer and use it in GitHub Desktop.
Save laravel-shift/cab527923ed2a109dda047b97d53c200 to your computer and use it in GitHub Desktop.

Revisions

  1. laravel-shift renamed this gist Nov 18, 2021. 1 changed file with 45 additions and 26 deletions.
    71 changes: 45 additions & 26 deletions .php_cs.laravel.php → .php-cs-fixer.php
    Original file line number Diff line number Diff line change
    @@ -4,54 +4,69 @@
    use PhpCsFixer\Finder;

    $rules = [
    'array_indentation' => true,
    'array_syntax' => ['syntax' => 'short'],
    'binary_operator_spaces' => [
    'default' => 'single_space',
    'operators' => ['=>' => null]
    'operators' => ['=>' => null],
    ],
    'blank_line_after_namespace' => true,
    'blank_line_after_opening_tag' => true,
    'blank_line_before_statement' => [
    'statements' => ['return']
    'statements' => ['return'],
    ],
    'braces' => true,
    'cast_spaces' => true,
    'class_attributes_separation' => [
    'elements' => ['method']
    'elements' => [
    'const' => 'one',
    'method' => 'one',
    'property' => 'one',
    'trait_import' => 'none',
    ],
    ],
    'class_definition' => [
    'multi_line_extends_each_single_line' => true,
    'single_item_single_line' => true,
    'single_line' => true,
    ],
    'class_definition' => true,
    'concat_space' => [
    'spacing' => 'none'
    'spacing' => 'none',
    ],
    'constant_case' => ['case' => 'lower'],
    'declare_equal_normalize' => true,
    'elseif' => true,
    'encoding' => true,
    'full_opening_tag' => true,
    'fully_qualified_strict_types' => true, // added by Shift
    'function_declaration' => true,
    'function_typehint_space' => true,
    'general_phpdoc_tag_rename' => true,
    'heredoc_to_nowdoc' => true,
    'include' => true,
    'increment_style' => ['style' => 'post'],
    'indentation_type' => true,
    'linebreak_after_opening_tag' => true,
    'line_ending' => true,
    'lowercase_cast' => true,
    'lowercase_constants' => true,
    'lowercase_keywords' => true,
    'lowercase_static_reference' => true, // added from Symfony
    'magic_method_casing' => true, // added from Symfony
    'magic_constant_casing' => true,
    'method_argument_space' => true,
    'method_argument_space' => [
    'on_multiline' => 'ignore',
    ],
    'multiline_whitespace_before_semicolons' => [
    'strategy' => 'no_multi_line',
    ],
    'native_function_casing' => true,
    'no_alias_functions' => true,
    'no_extra_blank_lines' => [
    'tokens' => [
    'extra',
    'throw',
    'use',
    'use_trait',
    ]
    ],
    ],
    'no_blank_lines_after_class_opening' => true,
    'no_blank_lines_after_phpdoc' => true,
    @@ -61,65 +76,69 @@
    'no_leading_import_slash' => true,
    'no_leading_namespace_whitespace' => true,
    'no_mixed_echo_print' => [
    'use' => 'echo'
    'use' => 'echo',
    ],
    'no_multiline_whitespace_around_double_arrow' => true,
    'multiline_whitespace_before_semicolons' => [
    'strategy' => 'no_multi_line'
    ],
    'no_short_bool_cast' => true,
    'no_singleline_whitespace_before_semicolons' => true,
    'no_spaces_after_function_name' => true,
    'no_spaces_around_offset' => true,
    'no_spaces_around_offset' => [
    'positions' => ['inside', 'outside'],
    ],
    'no_spaces_inside_parenthesis' => true,
    'no_trailing_comma_in_list_call' => true,
    'no_trailing_comma_in_singleline_array' => true,
    'no_trailing_whitespace' => true,
    'no_trailing_whitespace_in_comment' => true,
    'no_unneeded_control_parentheses' => true,
    'no_unneeded_control_parentheses' => [
    'statements' => ['break', 'clone', 'continue', 'echo_print', 'return', 'switch_case', 'yield'],
    ],
    'no_unreachable_default_argument_value' => true,
    'no_useless_return' => true,
    'no_whitespace_before_comma_in_array' => true,
    'no_whitespace_in_blank_line' => true,
    'normalize_index_brace' => true,
    'not_operator_with_successor_space' => true,
    'object_operator_without_whitespace' => true,
    'ordered_imports' => ['sortAlgorithm' => 'alpha'],
    'ordered_imports' => ['sort_algorithm' => 'alpha'],
    'psr_autoloading' => true,
    'phpdoc_indent' => true,
    'phpdoc_inline_tag' => true,
    'phpdoc_inline_tag_normalizer' => true,
    'phpdoc_no_access' => true,
    'phpdoc_no_package' => true,
    'phpdoc_no_useless_inheritdoc' => true,
    'phpdoc_scalar' => true,
    'phpdoc_single_line_var_spacing' => true,
    'phpdoc_summary' => true,
    'phpdoc_to_comment' => true,
    'phpdoc_summary' => false,
    'phpdoc_to_comment' => false, // override to preserve user preference
    'phpdoc_tag_type' => true,
    'phpdoc_trim' => true,
    'phpdoc_types' => true,
    'phpdoc_var_without_name' => true,
    'psr4' => true,
    'self_accessor' => true,
    'short_scalar_cast' => true,
    'simplified_null_return' => false, // disabled by Shift
    'simplified_null_return' => false, // disabled as "risky"
    'single_blank_line_at_eof' => true,
    'single_blank_line_before_namespace' => true,
    'single_class_element_per_statement' => true,
    'single_class_element_per_statement' => [
    'elements' => ['const', 'property'],
    ],
    'single_import_per_statement' => true,
    'single_line_after_imports' => true,
    'single_line_comment_style' => [
    'comment_types' => ['hash']
    'comment_types' => ['hash'],
    ],
    'single_quote' => true,
    'space_after_semicolon' => true,
    'standardize_not_equals' => true,
    'switch_case_semicolon_to_colon' => true,
    'switch_case_space' => true,
    'ternary_operator_spaces' => true,
    'trailing_comma_in_multiline_array' => true,
    'trailing_comma_in_multiline' => ['elements' => ['arrays']],
    'trim_array_spaces' => true,
    'unary_operator_spaces' => true,
    'visibility_required' => [
    'elements' => ['method', 'property']
    'elements' => ['method', 'property'],
    ],
    'whitespace_after_comma_in_array' => true,
    ];
    @@ -139,7 +158,7 @@
    ->ignoreDotFiles(true)
    ->ignoreVCS(true);

    return Config::create()
    return (new Config)
    ->setFinder($finder)
    ->setRules($rules)
    ->setRiskyAllowed(true)
  2. laravel-shift revised this gist Apr 3, 2021. 1 changed file with 7 additions and 7 deletions.
    14 changes: 7 additions & 7 deletions .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -124,15 +124,15 @@
    'whitespace_after_comma_in_array' => true,
    ];

    $project_path = getcwd();

    $finder = Finder::create()
    ->in([
    $project_path . '/app',
    $project_path . '/config',
    $project_path . '/database',
    $project_path . '/resources',
    $project_path . '/routes',
    $project_path . '/tests',
    __DIR__ . '/app',
    __DIR__ . '/config',
    __DIR__ . '/database',
    __DIR__ . '/resources',
    __DIR__ . '/routes',
    __DIR__ . '/tests',
    ])
    ->name('*.php')
    ->notName('*.blade.php')
  3. laravel-shift revised this gist Apr 23, 2020. 1 changed file with 10 additions and 7 deletions.
    17 changes: 10 additions & 7 deletions .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -100,7 +100,7 @@
    'psr4' => true,
    'self_accessor' => true,
    'short_scalar_cast' => true,
    'simplified_null_return' => true,
    'simplified_null_return' => false, // disabled by Shift
    'single_blank_line_at_eof' => true,
    'single_blank_line_before_namespace' => true,
    'single_class_element_per_statement' => true,
    @@ -124,15 +124,18 @@
    'whitespace_after_comma_in_array' => true,
    ];

    $project_path = getcwd();
    $finder = Finder::create()
    ->notPath('bootstrap')
    ->notPath('storage')
    ->notPath('vendor')
    ->in(getcwd())
    ->in([
    $project_path . '/app',
    $project_path . '/config',
    $project_path . '/database',
    $project_path . '/resources',
    $project_path . '/routes',
    $project_path . '/tests',
    ])
    ->name('*.php')
    ->notName('*.blade.php')
    ->notName('index.php')
    ->notName('server.php')
    ->ignoreDotFiles(true)
    ->ignoreVCS(true);

  4. laravel-shift revised this gist Oct 4, 2019. No changes.
  5. laravel-shift revised this gist Oct 4, 2019. 1 changed file with 28 additions and 15 deletions.
    43 changes: 28 additions & 15 deletions .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -4,36 +4,45 @@
    use PhpCsFixer\Finder;

    $rules = [
    'array_syntax' => ['syntax' => 'short'],
    'binary_operator_spaces' => [
    'default' => 'single_space',
    'operators' => ['=>' => null]
    ],
    'blank_line_after_namespace' => true,
    'blank_line_after_opening_tag' => true,
    'blank_line_before_statement' => true,
    'blank_line_before_statement' => [
    'statements' => ['return']
    ],
    'braces' => true,
    'cast_spaces' => true,
    'class_attributes_separation' => [
    'elements' => ['method']
    ],
    'class_definition' => true,
    'concat_space' => true,
    'concat_space' => [
    'spacing' => 'none'
    ],
    'declare_equal_normalize' => true,
    'elseif' => true,
    'encoding' => true,
    'full_opening_tag' => true,
    'fully_qualified_strict_types' => true, // added by Shift
    'function_declaration' => true,
    'function_typehint_space' => true,
    'single_line_comment_style' => [
    'comment_types' => ['hash']
    ],
    'heredoc_to_nowdoc' => true,
    'include' => true,
    'increment_style' => ['style' => 'post'],
    'indentation_type' => true,
    'linebreak_after_opening_tag' => true,
    'line_ending' => true,
    'lowercase_cast' => true,
    'lowercase_constants' => true,
    'lowercase_keywords' => true,
    'lowercase_static_reference' => true, // added from Symfony
    'magic_method_casing' => true, // added from Symfony
    'magic_constant_casing' => true,
    'method_argument_space' => true,
    'class_attributes_separation' => true,
    'visibility_required' => true,
    'native_function_casing' => true,
    'no_alias_functions' => true,
    'no_extra_blank_lines' => [
    @@ -51,8 +60,13 @@
    'no_empty_statement' => true,
    'no_leading_import_slash' => true,
    'no_leading_namespace_whitespace' => true,
    'no_mixed_echo_print' => [
    'use' => 'echo'
    ],
    'no_multiline_whitespace_around_double_arrow' => true,
    'multiline_whitespace_before_semicolons' => true,
    'multiline_whitespace_before_semicolons' => [
    'strategy' => 'no_multi_line'
    ],
    'no_short_bool_cast' => true,
    'no_singleline_whitespace_before_semicolons' => true,
    'no_spaces_after_function_name' => true,
    @@ -83,18 +97,18 @@
    'phpdoc_trim' => true,
    'phpdoc_types' => true,
    'phpdoc_var_without_name' => true,
    'increment_style' => ['style' => 'post'],
    'no_mixed_echo_print' => true,
    'psr4' => true,
    'self_accessor' => true,
    'array_syntax' => ['syntax' => 'short'],
    'short_scalar_cast' => true,
    'simplified_null_return' => true,
    'single_blank_line_at_eof' => true,
    'single_blank_line_before_namespace' => true,
    'single_class_element_per_statement' => true,
    'single_import_per_statement' => true,
    'single_line_after_imports' => true,
    'single_line_comment_style' => [
    'comment_types' => ['hash']
    ],
    'single_quote' => true,
    'space_after_semicolon' => true,
    'standardize_not_equals' => true,
    @@ -104,11 +118,10 @@
    'trailing_comma_in_multiline_array' => true,
    'trim_array_spaces' => true,
    'unary_operator_spaces' => true,
    'line_ending' => true,
    'visibility_required' => [
    'elements' => ['method', 'property']
    ],
    'whitespace_after_comma_in_array' => true,
    'lowercase_static_reference' => true, // added from Symfony
    'magic_method_casing' => true, // added from Symfony
    'fully_qualified_strict_types' => true, // added
    ];

    $finder = Finder::create()
  6. laravel-shift revised this gist Sep 19, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -70,7 +70,7 @@
    'normalize_index_brace' => true,
    'not_operator_with_successor_space' => true,
    'object_operator_without_whitespace' => true,
    'ordered_imports' => ['sortAlgorithm' => 'length'],
    'ordered_imports' => ['sortAlgorithm' => 'alpha'],
    'phpdoc_indent' => true,
    'phpdoc_inline_tag' => true,
    'phpdoc_no_access' => true,
  7. laravel-shift revised this gist Jul 26, 2019. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,6 @@
    use PhpCsFixer\Finder;

    $rules = [
    'phpdoc_indent' => true,
    'binary_operator_spaces' => [
    'operators' => ['=>' => null]
    ],
    @@ -50,7 +49,6 @@
    'no_closing_tag' => true,
    'no_empty_phpdoc' => true,
    'no_empty_statement' => true,
    'no_extra_blank_lines' => true,
    'no_leading_import_slash' => true,
    'no_leading_namespace_whitespace' => true,
    'no_multiline_whitespace_around_double_arrow' => true,
  8. laravel-shift revised this gist May 6, 2019. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -83,7 +83,6 @@
    'phpdoc_summary' => true,
    'phpdoc_to_comment' => true,
    'phpdoc_trim' => true,
    // 'phpdoc_type_to_var' => true, // unknown rule
    'phpdoc_types' => true,
    'phpdoc_var_without_name' => true,
    'increment_style' => ['style' => 'post'],
  9. laravel-shift revised this gist May 6, 2019. 1 changed file with 0 additions and 80 deletions.
    80 changes: 0 additions & 80 deletions .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -1,85 +1,5 @@
    <?php

    // From StyleCI

    // Laravel only
    // align_phpdoc
    // length_ordered_imports
    // no_blank_lines_between_traits
    // no_multiline_whitespace_before_semicolons
    // no_unreachable_default_argument_value
    // no_useless_return
    // not_operator_with_successor_space
    // post_increment
    // short_array_syntax
    // simplified_null_return

    // Symfony only
    // blank_line_before_break
    // blank_line_before_continue
    // blank_line_before_declare
    // blank_line_before_throw
    // blank_line_before_try
    // const_separation
    // new_with_braces
    // no_extra_block_blank_lines
    // no_spaces_outside_offset
    // php_unit_fqcn_annotation
    // phpdoc_align
    // phpdoc_annotation_without_dot
    // phpdoc_link_to_see
    // phpdoc_no_empty_return
    // phpdoc_return_self_reference
    // phpdoc_separation
    // pre_increment
    // property_separation
    // return_type_declaration
    // silenced_deprecation_error
    // single_line_class_definition
    // unalign_double_arrow
    // yoda_style


    // PHP CS Fixer

    // Symfony only

    // dir_constant
    // ereg_to_preg
    // error_suppression
    // fopen_flag_order
    // fopen_flags
    // function_to_constant
    // implode_call
    // increment_style
    // is_null
    // lowercase_static_reference
    // magic_method_casing
    // modernize_types_casting
    // native_constant_invocation
    // native_function_invocation
    // new_with_braces
    // no_break_comment
    // no_empty_comment
    // no_homoglyph_names
    // no_unneeded_curly_braces
    // no_unneeded_final_method
    // non_printable_character
    // php_unit_construct
    // php_unit_fqcn_annotation
    // phpdoc_annotation_without_dot
    // phpdoc_no_alias_tag
    // phpdoc_no_empty_return
    // phpdoc_return_self_reference
    // phpdoc_separation
    // phpdoc_types_order
    // protected_to_private
    // return_type_declaration
    // semicolon_after_instruction
    // set_type_to_cast
    // standardize_increment
    // yoda_style

    use PhpCsFixer\Config;
    use PhpCsFixer\Finder;

  10. laravel-shift created this gist May 6, 2019.
    213 changes: 213 additions & 0 deletions .php_cs.laravel.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,213 @@
    <?php

    // From StyleCI

    // Laravel only
    // align_phpdoc
    // length_ordered_imports
    // no_blank_lines_between_traits
    // no_multiline_whitespace_before_semicolons
    // no_unreachable_default_argument_value
    // no_useless_return
    // not_operator_with_successor_space
    // post_increment
    // short_array_syntax
    // simplified_null_return

    // Symfony only
    // blank_line_before_break
    // blank_line_before_continue
    // blank_line_before_declare
    // blank_line_before_throw
    // blank_line_before_try
    // const_separation
    // new_with_braces
    // no_extra_block_blank_lines
    // no_spaces_outside_offset
    // php_unit_fqcn_annotation
    // phpdoc_align
    // phpdoc_annotation_without_dot
    // phpdoc_link_to_see
    // phpdoc_no_empty_return
    // phpdoc_return_self_reference
    // phpdoc_separation
    // pre_increment
    // property_separation
    // return_type_declaration
    // silenced_deprecation_error
    // single_line_class_definition
    // unalign_double_arrow
    // yoda_style


    // PHP CS Fixer

    // Symfony only

    // dir_constant
    // ereg_to_preg
    // error_suppression
    // fopen_flag_order
    // fopen_flags
    // function_to_constant
    // implode_call
    // increment_style
    // is_null
    // lowercase_static_reference
    // magic_method_casing
    // modernize_types_casting
    // native_constant_invocation
    // native_function_invocation
    // new_with_braces
    // no_break_comment
    // no_empty_comment
    // no_homoglyph_names
    // no_unneeded_curly_braces
    // no_unneeded_final_method
    // non_printable_character
    // php_unit_construct
    // php_unit_fqcn_annotation
    // phpdoc_annotation_without_dot
    // phpdoc_no_alias_tag
    // phpdoc_no_empty_return
    // phpdoc_return_self_reference
    // phpdoc_separation
    // phpdoc_types_order
    // protected_to_private
    // return_type_declaration
    // semicolon_after_instruction
    // set_type_to_cast
    // standardize_increment
    // yoda_style

    use PhpCsFixer\Config;
    use PhpCsFixer\Finder;

    $rules = [
    'phpdoc_indent' => true,
    'binary_operator_spaces' => [
    'operators' => ['=>' => null]
    ],
    'blank_line_after_namespace' => true,
    'blank_line_after_opening_tag' => true,
    'blank_line_before_statement' => true,
    'braces' => true,
    'cast_spaces' => true,
    'class_definition' => true,
    'concat_space' => true,
    'declare_equal_normalize' => true,
    'elseif' => true,
    'encoding' => true,
    'full_opening_tag' => true,
    'function_declaration' => true,
    'function_typehint_space' => true,
    'single_line_comment_style' => [
    'comment_types' => ['hash']
    ],
    'heredoc_to_nowdoc' => true,
    'include' => true,
    'indentation_type' => true,
    'linebreak_after_opening_tag' => true,
    'lowercase_cast' => true,
    'lowercase_constants' => true,
    'lowercase_keywords' => true,
    'magic_constant_casing' => true,
    'method_argument_space' => true,
    'class_attributes_separation' => true,
    'visibility_required' => true,
    'native_function_casing' => true,
    'no_alias_functions' => true,
    'no_extra_blank_lines' => [
    'tokens' => [
    'extra',
    'throw',
    'use',
    'use_trait',
    ]
    ],
    'no_blank_lines_after_class_opening' => true,
    'no_blank_lines_after_phpdoc' => true,
    'no_closing_tag' => true,
    'no_empty_phpdoc' => true,
    'no_empty_statement' => true,
    'no_extra_blank_lines' => true,
    'no_leading_import_slash' => true,
    'no_leading_namespace_whitespace' => true,
    'no_multiline_whitespace_around_double_arrow' => true,
    'multiline_whitespace_before_semicolons' => true,
    'no_short_bool_cast' => true,
    'no_singleline_whitespace_before_semicolons' => true,
    'no_spaces_after_function_name' => true,
    'no_spaces_around_offset' => true,
    'no_spaces_inside_parenthesis' => true,
    'no_trailing_comma_in_list_call' => true,
    'no_trailing_comma_in_singleline_array' => true,
    'no_trailing_whitespace' => true,
    'no_trailing_whitespace_in_comment' => true,
    'no_unneeded_control_parentheses' => true,
    'no_unreachable_default_argument_value' => true,
    'no_useless_return' => true,
    'no_whitespace_before_comma_in_array' => true,
    'no_whitespace_in_blank_line' => true,
    'normalize_index_brace' => true,
    'not_operator_with_successor_space' => true,
    'object_operator_without_whitespace' => true,
    'ordered_imports' => ['sortAlgorithm' => 'length'],
    'phpdoc_indent' => true,
    'phpdoc_inline_tag' => true,
    'phpdoc_no_access' => true,
    'phpdoc_no_package' => true,
    'phpdoc_no_useless_inheritdoc' => true,
    'phpdoc_scalar' => true,
    'phpdoc_single_line_var_spacing' => true,
    'phpdoc_summary' => true,
    'phpdoc_to_comment' => true,
    'phpdoc_trim' => true,
    // 'phpdoc_type_to_var' => true, // unknown rule
    'phpdoc_types' => true,
    'phpdoc_var_without_name' => true,
    'increment_style' => ['style' => 'post'],
    'no_mixed_echo_print' => true,
    'psr4' => true,
    'self_accessor' => true,
    'array_syntax' => ['syntax' => 'short'],
    'short_scalar_cast' => true,
    'simplified_null_return' => true,
    'single_blank_line_at_eof' => true,
    'single_blank_line_before_namespace' => true,
    'single_class_element_per_statement' => true,
    'single_import_per_statement' => true,
    'single_line_after_imports' => true,
    'single_quote' => true,
    'space_after_semicolon' => true,
    'standardize_not_equals' => true,
    'switch_case_semicolon_to_colon' => true,
    'switch_case_space' => true,
    'ternary_operator_spaces' => true,
    'trailing_comma_in_multiline_array' => true,
    'trim_array_spaces' => true,
    'unary_operator_spaces' => true,
    'line_ending' => true,
    'whitespace_after_comma_in_array' => true,
    'lowercase_static_reference' => true, // added from Symfony
    'magic_method_casing' => true, // added from Symfony
    'fully_qualified_strict_types' => true, // added
    ];

    $finder = Finder::create()
    ->notPath('bootstrap')
    ->notPath('storage')
    ->notPath('vendor')
    ->in(getcwd())
    ->name('*.php')
    ->notName('*.blade.php')
    ->notName('index.php')
    ->notName('server.php')
    ->ignoreDotFiles(true)
    ->ignoreVCS(true);

    return Config::create()
    ->setFinder($finder)
    ->setRules($rules)
    ->setRiskyAllowed(true)
    ->setUsingCache(true);