This is guide for upgrade from version 2.x to 3.0 for using the CLI tool.
Before following this guide, install v2.19 and run in verbose mode (php-cs-fixer fix -v) or in future mode (PHP_CS_FIXER_FUTURE_MODE=1 php-cs-fixer fix) to identify deprecations and fix them first.
| 2.x | 3.0 | Description |
|---|---|---|
.php_cs |
.php-cs-fixer.php |
Configuration file (local) |
.php_cs.dist |
.php-cs-fixer.dist.php |
Configuration file (to be distributed) |
.php_cs.cache |
.php-cs-fixer.cache |
Cache file |
| 2.x | 3.0 | Description | Note |
|---|---|---|---|
| --diff-format | Type of differ | Option was removed, all diffs are now | |
udiff |
|||
| --show-progress | --show-progress | Type of progress indicator | Allowed values were modified: |
run-in and estimating was removed, |
|||
estimating-max was renamed to dots |
|||
| --rules | --rules | Default value changed from @PSR2 to @PSR12 | |
| --config --rules | No longer allowed to pass both |
| Old name | New name | Note |
|---|---|---|
blank_line_before_return |
blank_line_before_statement |
use configuration ['statements' => ['return']] |
final_static_access |
self_static_accessor |
|
hash_to_slash_comment |
single_line_comment_style |
use configuration ['comment_types' => ['hash']] |
lowercase_constants |
constant_case |
use configuration ['case' => 'lower'] |
method_separation |
class_attributes_separation |
use configuration ['elements' => ['method']] |
no_extra_consecutive_blank_lines |
no_extra_blank_lines |
|
no_multiline_whitespace_before_semicolons |
multiline_whitespace_before_semicolons |
|
no_short_echo_tag |
echo_tag_syntax |
use configuration ['format' => 'long'] |
php_unit_ordered_covers |
phpdoc_order_by_value |
use configuration ['annotations' => [ 'covers' ]] |
phpdoc_inline_tag |
general_phpdoc_tag_rename, phpdoc_inline_tag_normalizer and phpdoc_tag_type |
|
pre_increment |
increment_style |
use configuration ['style' => 'pre'] |
psr0 |
psr_autoloading |
use configuration ['dir' => x ] |
psr4 |
psr_autoloading |
|
silenced_deprecation_error |
error_suppression |
|
trailing_comma_in_multiline_array |
trailing_comma_in_multiline |
use configuration ['elements' => ['arrays']] |
| Rule | Root option | Note |
|---|---|---|
general_phpdoc_annotation_remove |
annotations |
|
no_extra_consecutive_blank_lines |
tokens |
|
no_spaces_around_offset |
positions |
|
no_unneeded_control_parentheses |
statements |
|
ordered_class_elements |
order |
|
php_unit_construct |
assertions |
|
php_unit_dedicate_assert |
target |
root option works differently than rootless configuration |
php_unit_strict |
assertions |
|
phpdoc_no_alias_tag |
replacements |
|
phpdoc_return_self_reference |
replacements |
|
random_api_migration |
replacements |
|
single_class_element_per_statement |
elements |
|
visibility_required |
elements |
| Rule | Option | Change |
|---|---|---|
binary_operator_spaces |
align_double_arrow |
option was removed, use operators instead |
binary_operator_spaces |
align_equals |
option was removed use operators instead |
blank_line_before_statement |
statements: die |
option die was removed from statements, use exit instead |
class_attributes_separation |
elements |
option does no longer accept flat array as a value, use map instead |
class_definition |
multiLineExtendsEachSingleLine |
option was renamed to multi_line_extends_each_single_line |
class_definition |
singleItemSingleLine |
option was renamed to single_item_single_line |
class_definition |
singleLine |
option was renamed to single_line |
doctrine_annotation_spaces |
around_argument_assignments |
option was removed, use before_argument_assignments and after_argument_assignments instead |
doctrine_annotation_spaces |
around_array_assignments |
option was removed, use after_array_assignments_colon, after_array_assignments_equals, before_array_assignments_colon and before_array_assignments_equals instead |
final_internal_class |
annotation-black-list |
option was renamed, use annotation_exclude |
final_internal_class |
annotation-white-list |
option was renamed, use annotation_include |
final_internal_class |
consider-absent-docblock-as-internal-class |
option was renamed, use consider_absent_docblock_as_internal_class |
header_comment |
commentType |
option was renamed to comment_type |
is_null |
use_yoda_style |
option was removed, use yoda_style rule instead |
no_extra_consecutive_blank_lines |
tokens |
one of possible values, useTrait, was renamed to use_trait |
ordered_class_elements |
sortAlgorithm |
option was renamed, use sort_algorithm instead |
ordered_imports |
importsOrder |
option was renamed, use imports_order |
ordered_imports |
sortAlgorithm |
option was renamed, use sort_algorithm |
php_unit_dedicate_assert |
functions |
option was removed, use target instead |
php_unit_test_annotation |
case |
option was removed, use php_unit_method_casing rule instead |
| Rule | Option | Old value | New value |
|---|---|---|---|
array_syntax |
syntax |
'long' |
'short' |
function_to_constant |
functions |
['get_class', 'php_sapi_name', 'phpversion', 'pi'] |
['get_called_class', 'get_class', 'php_sapi_name', 'phpversion', 'pi'] |
list_syntax |
syntax |
'long' |
'short' |
method_argument_space |
on_multiline |
'ignore' |
'ensure_fully_multiline' |
native_constant_invocation |
strict |
false |
true |
native_function_casing |
include |
'@internal' |
'@compiler_optimized' |
native_function_invocation |
include |
'@internal' |
'@compiler_optimized' |
native_function_invocation |
strict |
false |
true |
non_printable_character |
use_escape_sequences_in_strings |
false |
true (when running on PHP 7.0 and up) |
php_unit_dedicate_assert |
target |
'5.0' |
'newest' |
phpdoc_align |
tags |
['param', 'return', 'throws', 'type', 'var'] |
['method', 'param', 'property', 'return', 'throws', 'type', 'var'] |
phpdoc_scalar |
types |
['boolean', 'double', 'integer', 'real', 'str'] |
['boolean', 'callback', 'double', 'integer', 'real', 'str'] |
| Rule set | Note |
|---|---|
@PHP56Migration |
was empty |
no_unused_importsnow runs all files defined in the configuration (used to exclude some hardcoded directories)
udiffoutput now includes the file name in the output (if applicable)
- class
AbstractAlignFixerHelperhas been removed - class
AccessibleObjecthas been removed - class
AlignDoubleArrowFixerHelperhas been removed - class
AlignEqualsFixerHelperhas been removed - class
FixerConfigurationResolverRootlesshas been removed HeaderCommentFixerdeprecated properties have been removedMethodArgumentSpaceFixerdeprecated methods have been removedNoMixedEchoPrintFixerthe property$defaultConfighas been removed- class
Tokens, the following methods has been removed:current()key()next()rewind()valid()
- namespace
PhpCsFixer\Test\and each class in it has been removed, as it served pure development purpose and should not be part of production code - reach out to community if you are willing to help building dev package
ConfigurableFixerInterfacehas been updatedConfigurationDefinitionFixerInterfacehas been removed in favour of the updatedConfigurableFixerInterfaceDefinedFixerInterfacehas been removed, related methods are now part of the updatedFixerInterfaceinterfaceDifferInterfacehas been updatedFixerInterfaceinterface has been updatedPhpCsFixer\RuleSetInterfacehas been removed in favour of\PhpCsFixer\RuleSet\RuleSetInterface
- class
Tokenis nowfinal - class
Tokensis nowfinal - method
createof classConfighas been removed, use the constructor - method
createof classRuleSethas been removed, use the constructor
- method
getClassyElementsof classTokensAnalyzerparameter$returnTraitsImportshas been removed; now always returns trait import information - method
getSetDefinitionNamesof classRuleSethas been removed, useRuleSets::getSetDefinitionNames()