NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #214 most downloaded on Packagist
A tool to automatically fix PHP code style
Last release 16 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
refactor: more moderate permissions for newly created cache file/directory by @keradus in #9852
SimplifiedIfReturnFixer - fix whitespace before ; as well by @live627 in #9857FullyQualifiedStrictTypesFixer - document attribute handling in example by @keradus in #9859Full Changelog: v3.95.26...v3.95.27
One column per quarter.
SimplifiedIfReturnFixer - fix whitespace before ; as well (#9857)FullyQualifiedStrictTypesFixer - document attribute handling in example (#9859)docs: do not promote deprecated path argument usage with --path-mode=override by @keradus in #9850
simplified_if_return by @live627 in #9763benchmark.sh in favour of phpbench by @keradus in #9849path argument usage with --path-mode=override by @keradus in #9850Full Changelog: v3.95.25...v3.95.26
simplified_if_return (#9763)benchmark.sh in favour of phpbench (#9849)path argument usage with --path-mode=override (#9850)deps: bump phpstan/phpstan from 2.2.9 to 2.2.12 in /dev-tools in the phpstan group by @dependabot [bot] in #9822
IsNullFixer - handle is_null() calls using named arguments by @lazerg in #9828IsNullFixer - do not fix is_null() calls using argument unpacking by @lazerg in #9830?? in AssignNullCoalescingToCoalesceEqualFixer by @calebdw in #9831Full Changelog: v3.95.24...v3.95.25
?? in AssignNullCoalescingToCoalesceEqualFixer (#9831)IsNullFixer - do not fix is_null() calls using argument unpacking (#9830)IsNullFixer - handle is_null() calls using named arguments (#9828)fix: ControlStructureBracesFixer - do not read a body starting with a parenthesis as a condition by @xirvik in #9815
ControlStructureBracesFixer - do not read a body starting with a parenthesis as a condition by @xirvik in #9815.gitignore by @keradus in #9813DescribeCommand - replace dynamic method calls with explicit ones by @kubawerlos in #9817PhpdocOrderFixer - fix type of duplicated tags passed to naturalLanguageJoin by @kubawerlos in #9818Full Changelog: v3.95.23...v3.95.24
ControlStructureBracesFixer - do not read a body starting with a parenthesis as a condition (#9815).gitignore (#9813)DescribeCommand - replace dynamic method calls with explicit ones (#9817)PhpdocOrderFixer - fix type of duplicated tags passed to naturalLanguageJoin (#9818)fix: FunctionsAnalyzer - detect return type of a closure with a use clause by @lazerg in #9806
Full Changelog: v3.95.22...v3.95.23
fix: StaticLambdaFixer - do not make a lambda static when it is the direct subject of bindTo() or call() by @Amoifr in #9802
StaticLambdaFixer - do not make a lambda static when it is the direct subject of bindTo() or call() by @Amoifr in #9802Utils - fix stableSort() and sortFixers() template types, remove @phpstan-ignore suppressions by @kubawerlos in #9798Preg::replaceCallback() extension by @kubawerlos in #9799Full Changelog: v3.95.21...v3.95.22
StaticLambdaFixer - do not make a lambda static when it is the direct subject of bindTo() or call() (#9802)Preg::replaceCallback() extension (#9799)Utils - fix stableSort() and sortFixers() template types, remove @phpstan-ignore suppressions (#9798)fix: StatementIndentationFixer - do not treat ternary colon as block start by @lazerg in #9795
StatementIndentationFixer - do not treat ternary colon as block start by @lazerg in #9795NameQualifiedTransformer token insertion by @live627 in #9759Full Changelog: v3.95.20...v3.95.21
StatementIndentationFixer - do not treat ternary colon as block start (#9795)NameQualifiedTransformer token insertion (#9759)fix: PsrAutoloadingFixer - do not throw when the file cannot be resolved on disk by @olivier-zenchef in #9762
PsrAutoloadingFixer - do not throw when the file cannot be resolved on disk by @olivier-zenchef in #9762NoUnusedImportsFixerTest - add new cases around quoted values by @keradus in #9784mikey179/vfsstream by @kubawerlos in #9787Transformers - move looping over tokens directly into each transformer individually by @keradus in #9782Full Changelog: v3.95.19...v3.95.20
PsrAutoloadingFixer - do not throw when the file cannot be resolved on disk (#9762)mikey179/vfsstream (#9787)test: AbstractFixerTestCase - use spl_object_id() to fix PHP 8.6 deprecations by @kubawerlos in #9786
ClassDefinitionFixer - keep multiline constructor args when anonymous class has both extends and implements by @momala454 in #9625SelfStaticAccessorFixer - do not stop fixing a class after a static return type by @sinemacula-ben in #9774Runner - ignore coverage of non-deterministic parallel branches by @kubawerlos in #9785PHP_CS_FIXER_FAST_LINT_TEST_CASES by @kubawerlos in #9783AbstractFixerTestCase - use spl_object_id() to fix PHP 8.6 deprecations by @kubawerlos in #9786TestCaseUtils::createTemporaryDirectory() helper by @kubawerlos in #9788Full Changelog: v3.95.18...v3.95.19
ClassDefinitionFixer - keep multiline constructor args when anonymous class has both extends and implements (#9625)SelfStaticAccessorFixer - do not stop fixing a class after a static return type (#9774)Runner - ignore coverage of non-deterministic parallel branches (#9785)PHP_CS_FIXER_FAST_LINT_TEST_CASES (#9783)TestCaseUtils::createTemporaryDirectory() helper (#9788)AbstractFixerTestCase - use spl_object_id() to fix PHP 8.6 deprecations (#9786)deps: bump the phpstan group in /dev-tools with 2 updates by @dependabot [bot] in #9748
simplified_if_return by @live627 in #9747Full Changelog: v3.95.17...v3.95.18
simplified_if_return (#9747)perf: Token::equals() - Avoid building intermediary arrays by @live627 in #9739
Token::equals() - Avoid building intermediary arrays by @live627 in #9739Tokens::findSequence() - improve looping logic by @live627 in #9737Full Changelog: v3.95.16...v3.95.17
Token::equals() - Avoid building intermediary arrays (#9739)Tokens::findSequence() - improve looping logic (#9737)fix: PowToExponentiationFixer - do not produce two consecutive whitespace tokens by @lazerg in #9735
PowToExponentiationFixer - do not produce two consecutive whitespace tokens by @lazerg in #9735NoSuperfluousPhpdocTagsFixer with multiple hidden params by @HypeMC in #9736perf as new PR type by @keradus in #9742Full Changelog: v3.95.15...v3.95.16
NoSuperfluousPhpdocTagsFixer with multiple hidden params (#9736)PowToExponentiationFixer - do not produce two consecutive whitespace tokens (#9735)perf as new PR type (#9742)fix: self-update - fix "Access Denied" error when running on Windows by @mlocati in #9731
Full Changelog: v3.95.14...v3.95.15
deps: bump the phpstan group in /dev-tools with 2 updates by @dependabot [bot] in #9717
FunctionToConstantFixer by @kubawerlos in #9719ConfigurationResolverTest - fix types by @kubawerlos in #9725ClassDefinitionFixerTest - improve PHPDocs by @kubawerlos in #9726GeneralAttributeRemoveFixerTest - improve data provider types by @kubawerlos in #9727TrailingCommaInMultilineFixer - do not add trailing comma after first-class callable by @kubawerlos in #9722ClassAttributesSeparationFixer - handle property with hooks as last class element by @kubawerlos in #9724SingleClassElementPerStatementFixer - do not break PHP syntax when splitting properties with disjunctive normal form type by @kubawerlos in #9723ProjectCodeTest - improve PHPDocs by @kubawerlos in #9730Full Changelog: v3.95.13...v3.95.14
ClassAttributesSeparationFixer - handle property with hooks as last class element (#9724)SingleClassElementPerStatementFixer - do not break PHP syntax when splitting properties with disjunctive normal form type (#9723)TrailingCommaInMultilineFixer - do not add trailing comma after first-class callable (#9722)FunctionToConstantFixer (#9719)ClassDefinitionFixerTest - improve PHPDocs (#9726)ConfigurationResolverTest - fix types (#9725)GeneralAttributeRemoveFixerTest - improve data provider types (#9727)ProjectCodeTest - improve PHPDocs (#9730)fix: SelfAccessorFixer - do not replace constant with same name as class in the middle of a static access chain by @kubawerlos in #9716
SelfAccessorFixer - do not replace constant with same name as class in the middle of a static access chain by @kubawerlos in #9716SingleClassElementPerStatementFixer - do not drop type of typed constants by @kubawerlos in #9706Full Changelog: v3.95.12...v3.95.13
SelfAccessorFixer - do not replace constant with same name as class in the middle of a static access chain (#9716)SingleClassElementPerStatementFixer - do not drop type of typed constants (#9706)deps: bump the all group across 2 directories with 1 update by @dependabot [bot] in #9704
RuleSetDocumentationGenerator by @kubawerlos in #9705BinaryOperatorSpacesFixer - do not align nested array in yield with following yields by @kubawerlos in #9708Full Changelog: v3.95.11...v3.95.12
BinaryOperatorSpacesFixer - do not align nested array in yield with following yields (#9708)RuleSetDocumentationGenerator (#9705)fix: NoBreakCommentFixer - handle enum cases, TokensAnalyzer::isEnumCase - fix handling nested switch-cases
NoBreakCommentFixer - handle enum cases, TokensAnalyzer::isEnumCase - fix handling nested switch-cases (#9565)fix: TokensAnalyzer - handle T_PUBLIC_SET, T_PROTECTED_SET, T_PRIVATE_SET
TokensAnalyzer - handle T_PUBLIC_SET, T_PROTECTED_SET, T_PRIVATE_SET (#9696)refactor: change Fixers execution order to always-deterministic
class_keyword (#9689)fix: SingleClassElementPerStatementFixer - do not drop modifiers when splitting final constants/properties
SingleClassElementPerStatementFixer - do not drop modifiers when splitting final constants/properties (#9687)fix: ClassReferenceNameCasingFixer - do not change case of typed class constant names
ClassReferenceNameCasingFixer - do not change case of typed class constant names (#9686)UX: Cache - explicit deprecation for usage of non-handled objects in rules configuration, as they silently fail now; add support for JsonSerializable…
Preg::match/Preg::matchAll subject string type when match is truthy (#9668)PhpUnitAttributesFixer - correctly handle @requires PHPUnit with space-separated version constraint (#9684)chore: Cleanup assert() and add more precise Preg::matchAll() return type
assert() and add more precise Preg::matchAll() return type (#9667)GroupImportFixer (#9671)TypeExpression (#9665)assert calls (#9666)sebastian/diff:^9.0 (#9663)phpunit/phpunit:^13.2 in PhpUnitTestCaseStaticMethodCallsFixer (#9664)AgentDetector to detect presence of AI agent only when @auto format has been selected (#9658)PhpdocAddMissingParamAnnotationFixer - skip attribute tokens when extracting parameter type (#9634)StaticPrivateMethodFixer - fix for private constructor and abstract static method (#9598)simplified_if_return - applyFix to use slices for token insertion (#9670)chore: improve ArrayIndentationFixer
ArrayIndentationFixer (#9643)ClassDefinitionFixer (#9645)ControlCaseStructuresAnalyzer (#9644)NoAliasFunctionsFixer (#9647)NoSuperfluousPhpdocTagsFixer (#9646)PhpUnitTestCaseStaticMethodCallsFixer (#9649)Token (#9650)WorkerException (#9648)ergebnis/agent-detector for detecting the presence of an AI agent (#9656)CI: add generic phpstan/phpstan-deprecation-rules, so usage of old deprecated constants is detected
MultilinePromotedPropertiesFixer - fix for new in initializers (#9619)PhpdocLineSpanFixer - run after NoSuperfluousPhpdocTagsFixer (#9615)8.6snapshot with nightly in matrix (#9628)fix: MethodArgumentSpaceFixer - avoid collapsing multi-line arguments
MethodArgumentSpaceFixer - avoid collapsing multi-line arguments (#9559)ModifierKeywordsFixer - do not break PHP syntax for closures in constant expressions (#9596)NoRedundantReadonlyPropertyFixer - fix TypeError when trait contains anonymous class (#9457)PhpUnitAttributesFixer - add missing handling of CoversMethod and naive handling of CoversTrait (#9588)TextReporter - always show summary footer (#9595)facile-it/paraunit to ^2.11 (#9589)PhpdocTagCasingFixerTest (#9610)AbstractFopenFlagFixer (#9592)BlankLineBetweenImportGroupsFixer (#9562)ControlStructureBracesFixer (#9609)NoExtraBlankLinesFixer (#9567)OrderedImportsFixer (#9603)PhpdocSingleLineVarSpacingFixer (#9591)PhpdocToReturnTypeFixer (#9558)PhpUnitRequiresConstraintFixer from https://github.com/kubawerlos/php-cs-fixer-custom-fixers (#9581)php_unit_attributes rule (#9578)@author name per email (#9606)NoUnsetCastFixerTest - run any test on PHP >= 8 (#9585)chore: add tests for FinalInternalClassFixer
FinalInternalClassFixer (#9547)PhpdocToParamTypeFixer (#9550)MethodArgumentSpaceFixer - Do not collapse nested arguments when using ensure_single_line_for_single_argument option for on_multiline (#9552)@param in PhpdocToParamTypeFixerTest (#9549)CI: add failOnDeprecation="true" to PHPUnit config
remove_existing_declaration to declare_strict_types fixer (#9384)exclude option to phpdoc_types rule (#9479)NoWhitespaceInEmptyArrayFixer (#8155)json format when AI_AGENT environment variable is set (#9542)@Symfony:risky - add void_return (#9546)GlobalNamespaceImportFixer - support first-class callable syntax (#9484)MethodArgumentSpaceFixer - add ensure_single_line_for_single_argument option for on_multiline (#9504)MultilinePromotedPropertiesFixer - turn multiline promoted properties into singleline when there are fewer than minimum_number_of_parameters (#9501)PhpdocLineSpanFixer - add function option (#9439)ReturnAssignmentFixer - skip variables with the named @var tags with new option skip_named_var_tags (#9464)ArrayPushFixer - do not stop fixing when array_push with 1 argument found (#9508)BinaryOperatorSpacesFixer - make it works correctly with multiple match cases (#9470)EchoTagSyntaxFixer - do not break syntax for single line comments (#9506)PhpUnitTestClassRequiresCoversFixer - do not add @coversNothing to anonymous classes (#9481)SimplifiedNullReturnFixer - do not remove null from property hook (#9471)SetTypeToCastFixer (#9518)BracesPositionFixer (#9522)PsrAutoloadingFixer (#9541)ClassAttributesSeparationFixer (#9545)GeneralAttributeRemoveFixer (#9520)GlobalNamespaceImportFixerTest (#9482)NoTrailingCommaInSinglelineFixer (#9537)OrderedAttributesFixer (#9521)PhpUnitExpectationFixer (#9505)TypeExpression::REGEX_TYPES does not have unnamed capturing group (#9514)AbstractPhpUnitFixer (#9519)ArrayPushFixer (#9515)FunctionsAnalyzer (#9483)MbStrFunctionsFixer - remove the never true condition (#9509)ModernizeStrposFixer - remove the never true conditions (#9510)NoAliasFunctionsFixer - cleanup invalid set handling (#9511)failOnDeprecation="true" to PHPUnit config (#8935)issue_8828_c.test on macOS for now (#9528)PhpdocTypesNoDuplicatesFixer to PhpdocNoDuplicateTypesFixer (#9381)MethodArgumentSpaceFixer must run before NoTrailingCommaInSinglelineFixer (#9507)PhpUnitTestCaseStaticMethodCallsFixerTest::testInvalidConfiguration (#9460)fix: AttributeBlockNoSpacesFixer - skipping some attributes when multiple present
AttributeBlockNoSpacesFixer - skipping some attributes when multiple present (#9445)NoUnusedImportsFixer - do not remove constant types (#9442)PhpdocLineSpanFixer - handle unions and intersections in properties (#9438)chore: add tests for ArgumentsAnalyzer
ArgumentsAnalyzer (#9422)UX: enable parallel runner by default
case to phpdoc_line_span fixer (#9391)VoidReturnFixer - allow to skip lambdas (#9417)VoidReturnFixer - better describe exceptions (#9418)--stop-on-violation (#9393)NoUnreachableDefaultArgumentValueFixer - fix for closures (#9409)UseArrowFunctionsFixer - do not convert closure in attribute (#9416)fix: ErrorOutput - do not show "begin diff"/"end diff" when there is no diff
ErrorOutput - do not show "begin diff"/"end diff" when there is no diff (#9361)UseArrowFunctionsFixer - don't convert lambda with use($var) clause if it includes another file (#9389)feat: add ModernSerializationMethodsFixer
ModernSerializationMethodsFixer (#9108)NoRedundantReadonlyPropertyFixer (#9339)PhpdocTypesNoDuplicatesFixer (#9312)--config=- (#9379)@see tags in FullyQualifiedStrictTypesFixer (#9350)@Symfony set (#9303)braces_position rule (#9329)php_unit_test_case_static_method_calls from PHPUnit sets (#9341)@PHP7x0MigrationRisky - update configuration of RandomApiMigrationFixer to match it's newly updated v4 defaults (#9368)@Symfony:risky - extend set with modern_serialization_methods (#9366)@Symfony:risky - extend set with static_lambda (#9365)@Symfony - enable no_unneeded_control_parentheses.statements.negative_instanceof (#9336)@Symfony - extend set with no_useless_else (#9363)@Symfony - extend set with no_useless_return (#9364)RandomApiMigrationFixer - allow to convert mt_getrandmax and mt_srand (#9367)ModifierKeywordsFixer - closure in attribute (#9358)NoUselessElseFixer - handle conditional symbol declarations (#9347)OrderedClassElementsFixer - closure in attribute (#9357)PhpUnitAttributesFixer - do not add for annotation @testWith when attribute TestWith already present (#9354)@return annotations to Config (#9337)assign.propertyType error from PHPStan (#9332)phpstan:baseline command (#9346)fix: CombineConsecutiveUnsetsFixer - proper handling of trailing comma
CombineConsecutiveUnsetsFixer - proper handling of trailing comma (#9335)variable.undefined error from PHPStan (#9330)fix: ComposerJsonReader - handle more syntaxes
ComposerJsonReader - handle more syntaxes (#9327)fix: using Rule Customisation Policy with parallel runner
.php-cs-fixer.dist.php (#9311).php-cs-fixer.dist.php - drop wrongly called ignoreVCSIgnored (#9310)fix: let @php-cs-fixer-ignore accept custom fixer names
@php-cs-fixer-ignore accept custom fixer names (#9306)PHP_CS_FIXER_IGNORE_MISMATCHED_RULES_EXCEPTIONS (#9307)chore: update php-compatibility config
testFix* methods have no more than 4 parameters (#9298)testFix* methods have second parameter $input (#9297)$config to $configuration (#9299)testFix* parameter names (#9301)WhitespacesFixerConfig in tests (#9300)ProjectCodeTest::testExpectedInputOrder - move checks for testFix... methods (#9291)chore: '.php-cs-fixer.dist.php' - remove no longer needed rule, 'expectedDeprecation' annotation does not exist for long time
@php-cs-fixer-ignore annotation (#9280)Rule Customisation Policy (#9107)PhpUnitTestCaseStaticMethodCallsFixer - add handling of getStubBuilder (#9276)PhpUnitTestCaseStaticMethodCallsFixer - add target option (#8498)arguments.count error from PHPStan (#9258)generator.valueType error from PHPStan (#9259)plus.*NonNumeric errors from PHPStan (#9260)Config::getFinder() - fix typehinting (#9288)testFix* methods have first parameter $expected (#9289)ProjectCodeTest - refactor testExpectedInputOrder test (#9290)Rule Customisation Policy - better error message for wrong customisers (#9279)Rule Customisation Policy - prevent policy without version (#9278)Revert "feat: Symfony - add stringable_for_to_string to set"
fix: fix support call-site generic variance
PHP_CS_FIXER_IGNORE_ENV for PHP 8.6 (#9254)UX: show warning on PHP-mismatch only for 'fix' and 'check' commands
describe command works well for custom sets (#9246)CI: no more need for solving PHP 8.4 deprecations in /vendor/ anymore
StringableForToStringFixer (#9218)/vendor/ anymore (#9230).php-cs-fixer.php-highest.php to fully reflect PHP 8.4 (#9233)DeclareStrictTypesFixer - do not duplicate strict_types if it is already present, with other directive (#9225)FullyQualifiedStrictTypesFixer - fix crash on T_OPEN_TAG_WITH_ECHO (#9217)chore: no need for deprecation trigger in internal DataProviderAnalysis
@PHPXxYMigration(:risky) sets for supported PHP versions (#9207)@param type when description starts with all-uppercase word (#9169)describe command - allow to visualize Set as tree (#9179).php-cs-fixer.php local config file docs (#9185)testInvalidConfiguration methods (#9206)describe command - allow to expose rules without sets via @- alias (#9178)tearDown into assertPostConditions to fix Test code or tested code did not remove its own error handlers warning (#9182).php-cs-fixer.dist.php file (#9177)fix: NoUnneededBracesFixer - do not crash on multiline group import
NoUnneededBracesFixer - do not crash on multiline group import (#9160)fix: ComposerJsonReader - fix handling asterisk
cookbook_fixers.rst (#9162)phpcompatibility/* to alpha of next MAJOR instead of using dev branch, plus other minor upgrades (#9163)feat: autofix "no-return" phpdoc type to "never"
NoUnneededBracesFixer - remove unneeded braces from imports (#9118)FullyQualifiedStrictTypesFixer - replacing the real FQCN with a non-existent one (#8962)PhpdocToCommentFixer on property hooks (#9123)PhpUnitMethodCasingFixer to not cause a duplicate method declaration (#9124)StaticLambdaFixer - do not make function static when it contains anonymous class having $this in the constructor (#9088)UseArrowFunctionsFixer - do not produce two consecutive whitespace tokens (#9151)assert calls (#9144)shipmonk/composer-dependency-analyser instead of icanhazstring/composer-unused and maglnet/composer-require-checker (#9106)@autoPHPUnitMigration:riskyset (#9147)NoTrailingWhitespace* fixers (#9117)--expand and @ (#9119)composer qa script (#9138)--option value => --option=value (#9131)RunnerTest for MacOS (#9139)docs: describe command - allow to describe config in use
chore: use accidentally missing @auto:risky
@auto:risky (#9102)yamllint locally (#9093)feat: introduce @auto, @auto:risky sets
@auto, @auto:risky sets (#9090)@autoPHPMigration, @autoPHPMigration:risky, @autoPHPUnitMigration:risky sets (#9068)MAJORMINOR and MAJOR.MINOR into MAJORxMINOR (#9005)symfony ruleset: Add @const to phpdoc_no_alias_tag (#9016)BlankLinesBeforeNamespaceFixer - handle namespace without newline before (#9059)array_values() (#9054).php-cs-fixer.well-defined-arrays.php (#8987)argument.type errors (#9056)internal usage errors (#9063)class-string usages (#8968)getcwd() - ignore false return value (#9057)ReporterFactory - use class-string type (#9055)CHANGELOG.md (#9052)push event only for master branch (#9046)push event only for master branch (#9050)RuleSetDescriptionInterface into RuleSetDefinitionInterface (#9094)docs: unify docs around deprecated sets
phpdoc_to_param_type, phpdoc_to_return_type, phpdoc_to_property_type - handle type aliasing before handling PHP version (#9031)--sequential when facing fixing error (#9023)DocumentationCommandTest::testGeneratingDocumentation() as large test (#9028)chore: AbstractProxyFixer - require non-empty list of proxy fixers
AbstractProxyFixer - require non-empty list of proxy fixers (#9010)feat: deprecate using config from passed 'path' CLI argument
PhpdocTagNoNamedArgumentsFixer (#8906)@PHP85Migration set (#8941)@PhpCsFixer set towards new defaults of selected rules (#8981)PhpdocOrderFixer - do not allow duplicated tags in configuration (#8945)PhpdocOrderFixer when phpstan- / psalm- order is specified (#8853)README.md and CONTRIBUTING.md (#8974)JSON_THROW_ON_ERROR (#8993)multiline_string_to_heredoc (#9002)Annotation::getTagsWithTypes in favour of TAGS_WITH_TYPES constant (#8977)token_get_all (#8963)_PhpTokenArray usages (#8947)ci-integration.sh (#8989).gitignore (#8982)FAST_LINT_TEST_CASES into PHP_CS_FIXER_FAST_LINT_TEST_CASES (#8992)get_debug_type and ::class in exception messages (#9006)non-empty-list where appropriate (#8972)AbstractPhpdocTypesFixer - remove $tags property (#8980)CheckCommand - use regex instead of explode & substr (#8936)ClassAttributesSeparationFixer - improve code (#8950)EregToPregFixer - use constant instead of static property (#8978)FullyQualifiedStrictTypesFixer - ensure matching number of opening/closing braces (#9009)OrderedClassElementsFixer - use private method instead of anonymous function (#8931)PhpdocParamOrderFixer - improve/simplify code (#9012)PhpUnitDedicateAssertFixer - improve code for phpstan (#9011)Tokens::offsetSet - explicit validation of input (#9004)Tokens - override nullability of SplFixedArray (#9001)DocBlockAnnotation trait (#8953)PhpdocOrderFixer - calculate order only once (#8944)vendor/bin/phpunit --check-php-configuration (#8934)NoUnneededControlParenthesesFixer - add tests for "clone with" (#8937)PhpdocNoAliasTagFixerTest - add test for @const to @var (#8998)php-cs-fixer/accessible-object (#8948)docs: more explicit msg for stop using deprecated code
PER-CS3.0 rulsets (#8841)@Symfony and @PhpCsFixer sets (#8930)NoSuperfluousPhpdocTagsFixer - support multiline array shapes (#8903)Reflection*::setAccessible() in PHP >= 8.1 (#8907)@todo annotation casing (#8921)@phpstan-ignore for php version check (#8920)PhpUnitTestAnnotationFixer - use foreach instead of for (#8911)* chore: update legacy deps
docs: better document deprecated rule sets
ArrayIndentationFixer - handle closures inside attributes (#8888)NullableTypeDeclarationFixer - support final promoted properties (#8885)OperatorLinebreakFixer - support pipe operator (#8891)PhpdocTypesFixer - support multiline array shapes (#8893)BracesPositionFixer - handle property hooks correctly (#8886)NullableTypeDeclarationFixer - handle abstract and final properties (#8876)PhpdocLineSpanFixer - handle promoted properties (#8897)PhpUnitDataProviderNameFixer - fix for multiple providers defined by attributes for one test method (#8849)TernaryOperatorSpacesFixer - handle instanceof static (#8879)TypeDeclarationSpacesFixer - handle asymmetric visibility and final properties (#8900)PhpdocTypesFixer for multiline array shapes (#8894)PhpCsFixer\DocBlock\Annotation (#8892)booleanNot.exprNotBoolean errors (#8869)shipmonk/phpstan-baseline-per-identifier (#8844)@var annotations (#8867)ClassDefinitionFixer (#8868)Preg::match (#8872)ErrorsManager (#8863)OrderedInterfacesFixer - make code more PHPStan friendly (#8866)Token - add @phpstan-assert-if-true (#8865)feat: Introduce NoUselessPrintfFixer
NoUselessPrintfFixer (#8820)CastSpacesFixer - support (void) cast (#8851)NewExpressionParenthesesFixer - add to PHP84MigrationSet (#8788)VisibilityRequiredFixer - support final promoted properties (#8835)PhpdocToParamTypeFixer - do not convert types from phpstan-type, phpstan-import-type, psalm-type and psalm-import-type (#8842)PhpdocToPropertyTypeFixer - do not convert types from phpstan-type, phpstan-import-type, psalm-type and psalm-import-type (#8847)PhpdocToReturnTypeFixer - do not convert types from phpstan-type, phpstan-import-type, psalm-type and psalm-import-type (#8846)isGivenKind/equals/equalsAll calls (#8843)feat: Suppress enable parallel runner message when only 1 core is available
NoUnreachableDefaultArgumentValueFixer - do not crash on property hook (#8838)FullyQualifiedStrictTypesFixer - reduce function calls (#8834)fix: ClassAttributesSeparationFixer - handle method get aliased in trait import
ClassAttributesSeparationFixer - handle method get aliased in trait import (#8822)LowercaseStaticReferenceFixer - do not touch enum's cases (#8824)StatementIndentationFixer - multi constant statement containing array (#8825)VisibilityRequiredFixer - handle promoted property with visibility and reference, but without type (#8823)fix: OrderedClassElementsFixer - handle property hooks
OrderedClassElementsFixer - handle property hooks (#8817)SingleClassElementPerStatementFixer - fix for property hooks (#8816)Your coding agent can read these notes before it upgrades. Set up the MCP server →