diff --git a/src/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector.php b/src/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector.php index e968f6bb94a..e61e7d49b45 100644 --- a/src/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector.php +++ b/src/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector.php @@ -11,6 +11,7 @@ use Rector\Naming\PropertyNaming; use Rector\Node\Attribute; use Rector\Node\PropertyFetchNodeFactory; use Rector\NodeAnalyzer\Contrib\Symfony\ContainerCallAnalyzer; +use Rector\NodeAnalyzer\MethodCallAnalyzer; use Rector\Rector\AbstractRector; /** @@ -47,18 +48,25 @@ final class GetterToPropertyRector extends AbstractRector */ private $serviceTypeForNameProvider; + /** + * @var MethodCallAnalyzer + */ + private $methodCallAnalyzer; + public function __construct( PropertyNaming $propertyNaming, ClassPropertyCollector $classPropertyCollector, PropertyFetchNodeFactory $propertyFetchNodeFactory, ContainerCallAnalyzer $containerCallAnalyzer, - ServiceTypeForNameProviderInterface $serviceTypeForNameProvider + ServiceTypeForNameProviderInterface $serviceTypeForNameProvider, + MethodCallAnalyzer $methodCallAnalyzer ) { $this->propertyNaming = $propertyNaming; $this->classPropertyCollector = $classPropertyCollector; $this->propertyFetchNodeFactory = $propertyFetchNodeFactory; $this->containerCallAnalyzer = $containerCallAnalyzer; $this->serviceTypeForNameProvider = $serviceTypeForNameProvider; + $this->methodCallAnalyzer = $methodCallAnalyzer; } public function isCandidate(Node $node): bool @@ -67,7 +75,11 @@ final class GetterToPropertyRector extends AbstractRector return false; } - return $this->containerCallAnalyzer->isThisCall($node); + return $this->methodCallAnalyzer->isTypeAndMethod( + $node, + 'Symfony\Bundle\FrameworkBundle\Controller\Controller', + 'get' + ); } /** diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct.php.inc index fcc1ab323c3..b35e56a214d 100644 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct.php.inc +++ b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct.php.inc @@ -1,6 +1,8 @@ stdClass->render(); + $someService = $this->stdClass; + + $this->renderTwig([ + 'posts' => $this->stdClass->callMe() + ]); } } diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct2.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct2.php.inc deleted file mode 100644 index 034a58cff26..00000000000 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct2.php.inc +++ /dev/null @@ -1,17 +0,0 @@ -stdClass = $stdClass; - } - public function render() - { - $someService = $this->stdClass; - } -} diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct3.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct3.php.inc deleted file mode 100644 index 7eb41c64c41..00000000000 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct3.php.inc +++ /dev/null @@ -1,18 +0,0 @@ -stdClass = $stdClass; - } - public function render() - { - $someService = $this->stdClass; - $someResult = $this->stdClass->callMe(); - } -} diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct4.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct4.php.inc deleted file mode 100644 index 9e5142e2a0f..00000000000 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Correct/correct4.php.inc +++ /dev/null @@ -1,21 +0,0 @@ -stdClass = $stdClass; - } - public function render() - { - $this->renderTwig([ - 'posts' => $this->stdClass->callMe() - ]); - } -} diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/GetterToPropertyRectorTest.php b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/GetterToPropertyRectorTest.php index ce51b59a270..e934cecc568 100644 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/GetterToPropertyRectorTest.php +++ b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/GetterToPropertyRectorTest.php @@ -24,9 +24,6 @@ final class GetterToPropertyRectorTest extends AbstractRectorTestCase { return [ [__DIR__ . '/Wrong/wrong.php.inc', __DIR__ . '/Correct/correct.php.inc'], - [__DIR__ . '/Wrong/wrong2.php.inc', __DIR__ . '/Correct/correct2.php.inc'], - [__DIR__ . '/Wrong/wrong3.php.inc', __DIR__ . '/Correct/correct3.php.inc'], - [__DIR__ . '/Wrong/wrong4.php.inc', __DIR__ . '/Correct/correct4.php.inc'], ]; } diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong.php.inc index 930b7830e39..8f3439dc282 100644 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong.php.inc +++ b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong.php.inc @@ -1,9 +1,15 @@ get('some_service')->render(); + $someService = $this->get('some_service'); + + $this->renderTwig([ + 'posts' => $this->get('some_service')->callMe() + ]); } } diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong2.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong2.php.inc deleted file mode 100644 index 3254b11f6e0..00000000000 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong2.php.inc +++ /dev/null @@ -1,9 +0,0 @@ -get('some_service'); - } -} diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong3.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong3.php.inc deleted file mode 100644 index ad691721ff2..00000000000 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong3.php.inc +++ /dev/null @@ -1,10 +0,0 @@ -get('some_service'); - $someResult = $this->get('some_service')->callMe(); - } -} diff --git a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong4.php.inc b/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong4.php.inc deleted file mode 100644 index dc5998d759b..00000000000 --- a/tests/Rector/Contrib/Symfony/HttpKernel/GetterToPropertyRector/Wrong/wrong4.php.inc +++ /dev/null @@ -1,13 +0,0 @@ -renderTwig([ - 'posts' => $this->get('some_service')->callMe() - ]); - } -}