github rectorphp/rector 2.6.4
Released Rector 2.6.4

4 hours ago

A tooling release under the hood: Rector's dependency-injection container moves off illuminate/container onto entropy/entropy, and composer-based sets now target the lowest declared version of a library instead of guessing the current one.


New rules 🎉

rector-src

  • [Php7.4] IfToNullCoalescingAssignRector — convert an if null-guard into ??= (#8356)
  • [Php7.3] ArrayKeysToArrayKeyFirstLastRectorarray_keys($a)[0]array_key_first($a) (#8238)

rector-symfony

  • [Web Link] WebLinkStringRelationsToConstantsRector (#1058)

Engine 🔧

  • Switch the DI container from illuminate/container to entropy/entropy (#8362) — lighter container, order-independent service collections via autodiscover()
  • [VersionBonding] Allow a rule to require multiple composer package constraints at once (#8355)
  • [Composer] Target the lowest declared version for libraries in composer-based sets; only a project package type is treated as an application (#8359, #8363)
  • [Configuration] Skip deprecated rules pulled in from an active set — warn only instead of crashing (#8358)
  • [DI] Register PHPStan PhpVersionFactory as a public service so third-party rules can autowire it (#8365)
  • [PhpParser] Merge decorating node visitors from 14 to 8 for faster traversal (#8380)

Bugfixes 🐛

rector-src

  • [TypeDeclarationDocblocks] Skip ClassMethodArrayDocblockParamFromLocalCallsRector on methods overriding a parent/interface (#8357)
  • [TypeDeclarationDocblocks] Skip a contradicting @param array when the local call type conflicts with the default value (#8381)
  • [Naming] Skip a valid singular name with an ous suffix in RenameForeachValueVariableToMatchExprVariableRector (#8382)

rector-symfony

  • [Symfony 6.1] Skip CommandConfigureToAttributeRector on non-constant configure() values (#1057)
  • [Symfony 3.4] Skip ContainerGetNameToTypeInTestsRector when the named service has no matching FQCN service (#1051)
  • [Symfony 3.0] Skip OptionNameRector when no option name changes (#1044)

rector-phpunit

  • [CodeQuality] Fix AddInstanceofAssertForNullableArgumentRector duplicating assertInstanceOf inside traits (#773)
  • [CodeQuality] Fix MatchAssertSameExpectedTypeRector rewriting a passing assert into a failing one (#771)

Set changes 📈

rector-src

  • [CodeQuality] Add FlipNegatedTernaryInstanceofRector to the code quality level (#8385)

rector-symfony

  • [Symfony 7.3] Add missing rename function call (#1056)
  • [Symfony 7.2] Add missing rename class and function calls (#1055)
  • [CodeQuality] Move RequestIsMainRector and other version-bonded rules to the composer-based set (#1048, #1045)
  • [Symfony 7.3] GetFiltersAndFunctionsToAsTwigAttributeRector — support arrow-call functions; gate on symfony/twig-bridge 7.3, not twig alone (#1043, #1050)
  • [Set] Mark ANNOTATIONS_TO_ATTRIBUTES as @internal instead of @deprecated (#1053)

rector-doctrine

  • Move AddAnnotationToRepositoryRector to the composer-based set only (#510)

Deprecations 💀

Deprecated rules run without any effect, print a warning and will be removed in a future major release.

rector-symfony

  • [CodeQuality] InlineClassRoutePrefixRector (#1049)
  • [CodeQuality] AddTraitGetterReturnTypeBasedOnSetterRequiredRector (#1047)
  • [CodeQuality] LiteralGetToRequestClassConstantRector (#1046)

Removals 💀

rector-src

  • [Cleanup] Remove the write-only CallLikeThisBoundClosureArgsNodeVisitor and its unread attribute (#8373)

Don't miss a new rector release

NewReleases is sending notifications on new releases.