From ae50c0e5a3f31228834ce1f346b43c3bef7d6643 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 15 Mar 2024 19:25:11 +0000 Subject: [PATCH] Updated Rector to commit cdde425c2224a1357d70d6784936fe47fe3ffee0 https://github.com/rectorphp/rector-src/commit/cdde425c2224a1357d70d6784936fe47fe3ffee0 [Transform] Adds ArrayDimFetchToMethodCallRector rule (#5723) --- docs/rector_rules_overview.md | 17 ++++- .../ArrayDimFetchToMethodCallRector.php | 65 +++++++++++++++++++ .../ValueObject/ArrayDimFetchToMethodCall.php | 31 +++++++++ src/Application/VersionResolver.php | 4 +- vendor/composer/autoload_classmap.php | 2 + vendor/composer/autoload_static.php | 2 + 6 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php create mode 100644 rules/Transform/ValueObject/ArrayDimFetchToMethodCall.php diff --git a/docs/rector_rules_overview.md b/docs/rector_rules_overview.md index a3d89ae97a9..1d1a89462f4 100644 --- a/docs/rector_rules_overview.md +++ b/docs/rector_rules_overview.md @@ -56,7 +56,7 @@ - [Strict](#strict) (5) -- [Transform](#transform) (24) +- [Transform](#transform) (25) - [TypeDeclaration](#typedeclaration) (45) @@ -5869,6 +5869,21 @@ Add interface by used trait
+### ArrayDimFetchToMethodCallRector + +Change array dim fetch to method call + +:wrench: **configure it!** + +- class: [`Rector\Transform\Rector\ArrayDimFetch\ArrayDimFetchToMethodCallRector`](../rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php) + +```diff +-$app['someService']; ++$app->make('someService'); +``` + +
+ ### AttributeKeyToClassConstFetchRector Replace key value on specific attribute to class constant diff --git a/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php b/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php new file mode 100644 index 00000000000..8d730a27492 --- /dev/null +++ b/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php @@ -0,0 +1,65 @@ +make('someService'); +CODE_SAMPLE +, [new ArrayDimFetchToMethodCall('SomeClass', 'make')])]); + } + public function getNodeTypes() : array + { + return [ArrayDimFetch::class]; + } + /** + * @param ArrayDimFetch $node + */ + public function refactor(Node $node) : ?MethodCall + { + if (!$node->var instanceof Variable) { + return null; + } + foreach ($this->arrayDimFetchToMethodCalls as $arrayDimFetchToMethodCall) { + if (!$node->dim instanceof Node) { + return null; + } + if (!$this->isObjectType($node->var, new ObjectType($arrayDimFetchToMethodCall->getClass()))) { + return null; + } + return new MethodCall($node->var, $arrayDimFetchToMethodCall->getMethod(), [new Arg($node->dim)]); + } + return null; + } + public function configure(array $configuration) : void + { + Assert::allIsInstanceOf($configuration, ArrayDimFetchToMethodCall::class); + $this->arrayDimFetchToMethodCalls = $configuration; + } +} diff --git a/rules/Transform/ValueObject/ArrayDimFetchToMethodCall.php b/rules/Transform/ValueObject/ArrayDimFetchToMethodCall.php new file mode 100644 index 00000000000..9f2ebb49ae1 --- /dev/null +++ b/rules/Transform/ValueObject/ArrayDimFetchToMethodCall.php @@ -0,0 +1,31 @@ +class = $class; + $this->method = $method; + } + public function getClass() : string + { + return $this->class; + } + public function getMethod() : string + { + return $this->method; + } +} diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index d3321503d63..2fde9886c46 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = 'a844e40a3f84f120866198401f9b3640575f7c06'; + public const PACKAGE_VERSION = 'cdde425c2224a1357d70d6784936fe47fe3ffee0'; /** * @api * @var string */ - public const RELEASE_DATE = '2024-03-15 14:13:28'; + public const RELEASE_DATE = '2024-03-15 20:22:53'; /** * @var int */ diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 0166680ffc2..f4cd3bc643f 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -2286,6 +2286,7 @@ return array( 'Rector\\Transform\\NodeAnalyzer\\FuncCallStaticCallToMethodCallAnalyzer' => $baseDir . '/rules/Transform/NodeAnalyzer/FuncCallStaticCallToMethodCallAnalyzer.php', 'Rector\\Transform\\NodeFactory\\PropertyFetchFactory' => $baseDir . '/rules/Transform/NodeFactory/PropertyFetchFactory.php', 'Rector\\Transform\\NodeTypeAnalyzer\\TypeProvidingExprFromClassResolver' => $baseDir . '/rules/Transform/NodeTypeAnalyzer/TypeProvidingExprFromClassResolver.php', + 'Rector\\Transform\\Rector\\ArrayDimFetch\\ArrayDimFetchToMethodCallRector' => $baseDir . '/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php', 'Rector\\Transform\\Rector\\Assign\\PropertyAssignToMethodCallRector' => $baseDir . '/rules/Transform/Rector/Assign/PropertyAssignToMethodCallRector.php', 'Rector\\Transform\\Rector\\Assign\\PropertyFetchToMethodCallRector' => $baseDir . '/rules/Transform/Rector/Assign/PropertyFetchToMethodCallRector.php', 'Rector\\Transform\\Rector\\Attribute\\AttributeKeyToClassConstFetchRector' => $baseDir . '/rules/Transform/Rector/Attribute/AttributeKeyToClassConstFetchRector.php', @@ -2310,6 +2311,7 @@ return array( 'Rector\\Transform\\Rector\\StaticCall\\StaticCallToMethodCallRector' => $baseDir . '/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php', 'Rector\\Transform\\Rector\\StaticCall\\StaticCallToNewRector' => $baseDir . '/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php', 'Rector\\Transform\\Rector\\String_\\StringToClassConstantRector' => $baseDir . '/rules/Transform/Rector/String_/StringToClassConstantRector.php', + 'Rector\\Transform\\ValueObject\\ArrayDimFetchToMethodCall' => $baseDir . '/rules/Transform/ValueObject/ArrayDimFetchToMethodCall.php', 'Rector\\Transform\\ValueObject\\AttributeKeyToClassConstFetch' => $baseDir . '/rules/Transform/ValueObject/AttributeKeyToClassConstFetch.php', 'Rector\\Transform\\ValueObject\\ClassMethodReference' => $baseDir . '/rules/Transform/ValueObject/ClassMethodReference.php', 'Rector\\Transform\\ValueObject\\ConstFetchToClassConstFetch' => $baseDir . '/rules/Transform/ValueObject/ConstFetchToClassConstFetch.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 04b3da07ead..064b4a4429c 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -2505,6 +2505,7 @@ class ComposerStaticInit1738583af5734d6ba4a4af91c9f317d8 'Rector\\Transform\\NodeAnalyzer\\FuncCallStaticCallToMethodCallAnalyzer' => __DIR__ . '/../..' . '/rules/Transform/NodeAnalyzer/FuncCallStaticCallToMethodCallAnalyzer.php', 'Rector\\Transform\\NodeFactory\\PropertyFetchFactory' => __DIR__ . '/../..' . '/rules/Transform/NodeFactory/PropertyFetchFactory.php', 'Rector\\Transform\\NodeTypeAnalyzer\\TypeProvidingExprFromClassResolver' => __DIR__ . '/../..' . '/rules/Transform/NodeTypeAnalyzer/TypeProvidingExprFromClassResolver.php', + 'Rector\\Transform\\Rector\\ArrayDimFetch\\ArrayDimFetchToMethodCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/ArrayDimFetch/ArrayDimFetchToMethodCallRector.php', 'Rector\\Transform\\Rector\\Assign\\PropertyAssignToMethodCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/Assign/PropertyAssignToMethodCallRector.php', 'Rector\\Transform\\Rector\\Assign\\PropertyFetchToMethodCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/Assign/PropertyFetchToMethodCallRector.php', 'Rector\\Transform\\Rector\\Attribute\\AttributeKeyToClassConstFetchRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/Attribute/AttributeKeyToClassConstFetchRector.php', @@ -2529,6 +2530,7 @@ class ComposerStaticInit1738583af5734d6ba4a4af91c9f317d8 'Rector\\Transform\\Rector\\StaticCall\\StaticCallToMethodCallRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php', 'Rector\\Transform\\Rector\\StaticCall\\StaticCallToNewRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/StaticCall/StaticCallToNewRector.php', 'Rector\\Transform\\Rector\\String_\\StringToClassConstantRector' => __DIR__ . '/../..' . '/rules/Transform/Rector/String_/StringToClassConstantRector.php', + 'Rector\\Transform\\ValueObject\\ArrayDimFetchToMethodCall' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/ArrayDimFetchToMethodCall.php', 'Rector\\Transform\\ValueObject\\AttributeKeyToClassConstFetch' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/AttributeKeyToClassConstFetch.php', 'Rector\\Transform\\ValueObject\\ClassMethodReference' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/ClassMethodReference.php', 'Rector\\Transform\\ValueObject\\ConstFetchToClassConstFetch' => __DIR__ . '/../..' . '/rules/Transform/ValueObject/ConstFetchToClassConstFetch.php',