NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #204 most downloaded on Packagist
A tool to automatically fix PHP code style
Last release 10 days ago
22 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
394 releases · first in 2012
fix: Do not override short name with relative reference
BinaryOperatorSpacesFixer work as pre-v3.47 (#7751)FullyQualifiedStrictTypesFixer - do not change case of the symbol when there's name collision between imported class and imported function (#7750)FullyQualifiedStrictTypesFixer - do not modify statements with property fetch and :: (#7749)DX: fix deprecation tests warnings for PHP 7.4
actions/stale v9 (#7710)host.docker.internal in Compose override template (#7661)NumericLiteralSeparatorFixer - change default strategy to use_separator (#7730)spacing option to PhpdocAlignFixer (#6505)union_types option to phpdoc_to_param_type, phpdoc_to_property_type, and phpdoc_to_return_type fixers (#7672)heredoc_closing_marker fixer (#7660)multiline_string_to_heredoc fixer (#7665)NumericLiteralSeparatorFixer (#6761)heredoc_closing_marker fixer (#7676)fully_qualified_strict_types (#7659)@PhpCsFixer ruleset - enable no_whitespace_before_comma_in_array.after_heredoc (#7670)fully_qualified_strict_types (respect declared symbols, relative imports, leading backslash in global namespace) (#7679)numeric_literal_separator (#7735)BinaryOperatorSpacesFixer - align correctly when multiple shifts occurs in single line (#7593)ClassReferenceNameCasingFixer capitalizes the property name after the nullsafe operator (#7696)fully_qualified_strict_types with leading_backslash_in_global_namespace enabled - handle reserved types in phpDoc (#7648)NoSpaceAroundDoubleColonFixer must run before MethodChainingIndentationFixer (#7723)no_superfluous_phpdoc_tags must honour multiline docs (#7697)numeric_literal_separator - Handle zero-leading floats properly (#7737)Tokens::block*Cache hit increased by ~12% (#6176)Tokens::clearEmptyTokens - play defensive with cache clearing (#7658)One column per quarter.
chore: fix internal typehints in Tokens
@PER-CS (only behind PHP_CS_FIXER_FUTURE_MODE=1) (#7650)fully_qualified_strict_types (#7653)leading_backslash_in_global_namespace option enabled (#7654)feat: Enable symbol importing in @PhpCsFixer ruleset
@PhpCsFixer ruleset (#7629)feat: Introduce percentage bar as new default progress output
fix: Import only unique symbols' short names
chore: change base of @Symfony set to @PER-CS2.0
@Symfony set to @PER-CS2.0 (#7627)@PER-CS2.0 (#7625)chore: deprecate Token::isKeyCaseSensitive
composer-unused (#7536)PHPUnit\Framework\TestCase (#7563)PhpCsFixer\Tests\TestCase (#7567)AbstractFixerTestCase::testProperMethodNaming are not already fixed (#7588)PhpUnitNamespacedFixerTest::testClassIsFixed (#7564)symfony/phpunit-bridge (#7578)fully_qualified_strict_types fixer (#5620)fully_qualified_strict_types (#7459)DX: Change @testWith to @dataProvider
@testWith to @dataProvider (#7535)var keyword (#7538)chore: Move mb_str_functions PHP 8.3 cases to separate test
mb_str_functions PHP 8.3 cases to separate test (#7505)no_spaces_after_function_name (#7520)cs:check script (#7514)mb_str_pad function in mb_str_functions rule (#7499)docs: fix link to source classes
chore: Indent JSON files with 4 spaces
NoSpacesAfterFunctionNameFixer - do not remove space if the opening parenthesis part of an expression (#7430)chore: officially support PHP 8.3
facile-it/paraunit (#7470)fix: NoExtraBlankLinesFixer - do not remove blank line after ? : throw
? : throw (#7457)ExplicitIndirectVariableFixerTest (#7451)chore: Add support for Symfony 7
Preg's last error message in exception message (#7443)@PHP83Migration ruleset and PHP 8.3 integration test (#7439)AbstractIntegrationTestCase description (#7452)docs: fix 'Could not lex literal_block as "php". Highlighting skipped.'
chore: ListSetsCommand::execute - add missing return type
actions/checkout v4 (#7423)@var callable signature (#7429)composer normalize (#7424)CI: add curl and mbstring to build php
array_indentation (#7405)@Symfony - keep Annotation,NamedArgumentConstructor,Target annotations as single group (#7399)docs: config file - provide better examples
feat: add parallel cache support
chore: disable infection-installer plugin, as we do not use infection/* yet
infection-installer plugin, as we do not use infection/* yet (#7391)fix: Mark PhpdocReadonlyClassCommentToKeywordFixer as risky
PhpdocReadonlyClassCommentToKeywordFixer as risky (#7372)chore: Autoreview: test all formats are listed in usage.rst
usage.rst (#7357)phpunitgoodpractices/traits anymore (#7362)indexes to indices (#7368)phpunitgoodpractices/traits (#7363)\ when in global namespace (#7186)@PER-CS2.0 to match short closure space (#6970)ordered_types in @PhpCsFixer (#7361)deps: revert "prevent using PHPCSFixer along with unfinalize package (#7343)"
feat: Introduce check command (alias for fix --dry-run)
check command (alias for fix --dry-run) (#7322)Nothing published for this version
feat: Introduce native_type_declaration_casing fixer
native_type_declaration_casing fixer (#7330)Nothing published for this version
feat: Deprecate CompactNullableTypehintFixer and proxy to CompactNullableTypeDeclarationFixer
unfinalize package (#7343)CompactNullableTypehintFixer and proxy to CompactNullableTypeDeclarationFixer (#7339)CurlyBracesPositionFixer and proxy to BracesPositionFixer (#7334)NewWithBracesFixer and proxy to NewWithParenthesesFixer (#7331)NoUnneededCurlyBracesFixer and proxy to NoUnneededBracesFixer (#7335)CurlyBraceTransformer to BraceTransformer (#7333)fix: Adjust wording related to deprecations
attribute_placement option for MethodArgumentSpaceFixer (#7320)FunctionToConstantFixer should run before NativeConstantInvocationFixer (#7344)feat: Introduce AttributeEmptyParenthesesFixer
AttributeEmptyParenthesesFixer (#7284)YodaStyleFixer): do not touch require(_once), include(_once) and yield from statements (#7325)ReturnToYieldFromFixer (#7318)chore: fix TODO tasks about T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG support
@PhpCsFixer:risky): use newest @PER-CS:risky instead of locked @PER-CS2.0:risky (#7323)@PER-CS ruleset (#7321)chore(prlint): allow for 'deps' type
@PER-CS2.0): Add concat_space to the ruleset (#7302)feat: Mark PER-CS v1 as deprecated
--show-progress=estimating in docs (#7287)LongToShorthandOperatorFixer (#7295)single_line_empty_body to @PER-CS2.0 (#7282)OrderedTraitsFixer - better support for multiple traits in one use statement (#7289)fix: Handle superfluous asterisk in no_superfluous_phpdoc_tags
no_superfluous_phpdoc_tags (#7279)chore(checkbashisms): update to 2.23.6
single_line_empty_body to @PhpCsFixer (#7266)InstallViaComposerTest (#7265)fix: PhpdocTypesFixer - do not crash for type followed by braces/brackets/chevrons/parentheses
feat: Remove Doctrine dependencies
chore: apply static_lambda rule
integer_literal_case (#7081)method_argument_space (#7242)NoUnusedImportsFixer (#7246)no_superfluous_phpdoc_tags with null phpdoc (#7234)phpdoc_types must not lowercase literal types (#7108)DX: Get rid of deprecation warnings in Mess Detector
no_superfluous_phpdoc_tags fixer (#7189)FullyQualifiedStrictTypesFixer fixer (#7188)FinalInternalClassFixer (#7160)yield from after } (#7169)HeaderCommentFixer must run before BlankLinesBeforeNamespaceFixer (#7205)NoUselessReturnFixer must run before SingleLineEmptyBodyFixer (#7226)PhpdocInlineTagNormalizerFixer - do not break tags (#7227)phpdoc_align (#7120)MethodArgumentSpaceFixer - mention PSR in Fixer definition (#7157)YieldFromArrayToYieldsFixer to PhpCsFixer set (#7115)ReturnToYieldFromFixer (#7181)HeredocIndentationFixer for the codebase (#7195)UseArrowFunctionsFixer for the codebase (#7194)ErrorOutputTest (#7183)CurlyBracesPositionFixer code samples (#7198)HeredocIndentationFixer code samples (#7197)PhpdocToReturnTypeFixer code samples (#7199)ReturnToYieldFromFixer (#7168)SpacesInsideParenthesesFixer (#5709)trim_array_spaces (#7218)BlankLineBeforeStatementFixer - skip enum cases (#7203)DX: add proper test for SelfAccessorFixer must run before SelfAccessorFixer
SelfAccessorFixer must run before SelfAccessorFixer (#7153)PhpUnitDataProviderReturnTypeFixer (#7156)YieldFromArrayToYieldsFixer (#7114)Revert "DX: encourage to provide wider description"
docs: check format of FixerDefinition::getDescription()
class::getPriority for phpDoc diffs (#7148)Tokens checking for found tokens (#7139)AbstractFixerTestCase::getTestFile() final (#7116)array_search call strict (#7145)empty calls (#7138)AbstractIntegrationTestCase::provideIntegrationCases - yield over array, better typehinting (#7150)experimental release * Require PHP ^8.0.1
experimental release
bug: Fix and enhance Gitlab reporter
FinalPublicMethodForAbstractClassFixer - fix for readonly classes (#7123)FileRemovalTest (do not fail when running it standalone) (#7104)*TestCase convention (#7100)NullableTypeDeclarationFixer (#7002)TypeDeclarationSpacesFixer (#7001)BlankLineBetweenImportGroupsFixer - keep indent (#7122)DX: fix priority of FinalClassFixer
FinalClassFixer (#7091)NullableTypeDeclarationForDefaultNullValue - support for nullability in union types (#5819)bug: NoMultipleStatementsPerLineFixer must run before CurlyBracesPositionFixer
bug: CurlyBracesPositionFixer must run before StatementIndentationFixer
bug: SelfAccessorFixer - fix for union types
php_unit_data_provider_name to @PhpCsFixer:risky set (#7069)PhpUnitDataProviderNameFixer (#7057)DX: officially deprecate internal Utils anti-pattern class
? and static (#6993)statement_indentation (#6978)$this from TernaryToNullCoalescingFixer (#7052)return_assignment not formatting when variables are used in catch and finally (#6960)TypeExpression::allowsNull() with nullable (#7000)php_unit_namespaced less greedy (#6952)static (#6995)FullyQualifiedStrictTypesFixer - fix shortening when namespace is not empty and import exists (#7027)NoUnneededControlParenthesesFixer PHP8.0 null-safe operator (#7056)PhpdocToCommentFixer support for enum cases (#7040)@ in PR title (#6982)actions/stale to handle stale issues and pull requests (#5085)Utils::naturalLanguageJoin() in implode calls (#7032)ordered_class_elements (#6360)Dynamic class constant fetch (#7004)FinalClassFixer (#6893)Util::naturalLanguageJoin() (#7022)readonly in anonymous class definitions (#7014)readonly (#7013)HelpCommand::toString() to Utils (#7034)SelfStaticAccessorFixer improvements for enums (#7026)SingleSpaceAroundConstructFixer - support space before as (#7029)UseArrowFunctionsFixer - run before FunctionDeclarationFixer (#7065)bug: Allow string quote to be escaped within phpdoc constant
self_static_accessor fixer to the project (again) (#6927)static to self assert calls (#6931)OrderedTypesFixer (#6571)feature: introduce single_space_around_construct, deprecate single_space_after_construct
Tokens::offsetGet() (#6838)bug: BinaryOperatorSpacesFixer - fix for static in type
bug: VisibilityRequiredFixer - handle DNF types
bug: EmptyLoopBodyFixer must keep comments inside
bug: CurlyBracesPositionFixer - fix for open brace not preceded by space and followed by a comment
sebastian/diff:^5.0.0 (#6771)DX: Drop doctrine/annotations 1, allow doctrine/lexer 3
DX: Drop support for doctrine/lexer 1
DX: Allow doctrine/annotations 2
bug: Fix indentation for comment at end of function followed by a comma
\Closure (#6746)Your coding agent can read these notes before it upgrades. Set up the MCP server →