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_imports
now runs all files defined in the configuration (used to exclude some hardcoded directories)
udiff
output now includes the file name in the output (if applicable)
- class
AbstractAlignFixerHelper
has been removed - class
AccessibleObject
has been removed - class
AlignDoubleArrowFixerHelper
has been removed - class
AlignEqualsFixerHelper
has been removed - class
FixerConfigurationResolverRootless
has been removed HeaderCommentFixer
deprecated properties have been removedMethodArgumentSpaceFixer
deprecated methods have been removedNoMixedEchoPrintFixer
the property$defaultConfig
has 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
ConfigurableFixerInterface
has been updatedConfigurationDefinitionFixerInterface
has been removed in favor of the updatedConfigurableFixerInterface
DefinedFixerInterface
has been removed, related methods are now part of the updatedFixerInterface
interfaceDifferInterface
has been updatedFixerInterface
interface has been updatedPhpCsFixer\RuleSetInterface
has been removed in favor of\PhpCsFixer\RuleSet\RuleSetInterface
- class
Token
is nowfinal
- class
Tokens
is nowfinal
- method
create
of classConfig
has been removed, use the constructor - method
create
of classRuleSet
has been removed, use the constructor
- method
getClassyElements
of classTokensAnalyzer
parameter$returnTraitsImports
has been removed; now always returns trait import information - method
getSetDefinitionNames
of classRuleSet
has been removed, useRuleSets::getSetDefinitionNames()