diff --git a/src/Collector/NewWithFollowingSettersCollector.php b/src/Collector/NewWithFollowingSettersCollector.php index 22b87ca5..f146e621 100644 --- a/src/Collector/NewWithFollowingSettersCollector.php +++ b/src/Collector/NewWithFollowingSettersCollector.php @@ -27,6 +27,7 @@ use PHPStan\Reflection\ClassReflection; use PHPStan\Reflection\ReflectionProvider; use Symfony\Component\HttpKernel\Kernel; +use Symplify\PHPStanRules\Enum\SymfonyClass; use Webmozart\Assert\Assert; /** @@ -47,7 +48,12 @@ /** * @var string[] */ - private const array EXCLUDED_CLASSES = [Kernel::class]; + private const array EXCLUDED_CLASSES = [ + Kernel::class, + // controllers use setContainer() by Symfony design + SymfonyClass::ABSTRACT_CONTROLLER, + SymfonyClass::CONTROLLER, + ]; public function __construct( private ReflectionProvider $reflectionProvider, diff --git a/tests/Rules/NewOverSettersRule/Fixture/SkipController.php b/tests/Rules/NewOverSettersRule/Fixture/SkipController.php new file mode 100644 index 00000000..af77ea9c --- /dev/null +++ b/tests/Rules/NewOverSettersRule/Fixture/SkipController.php @@ -0,0 +1,22 @@ +setContainer('some_container'); + } + + public function second() + { + $someController = new SomeController(); + $someController->setContainer('some_container'); + } +} diff --git a/tests/Rules/NewOverSettersRule/NewOverSettersRuleTest.php b/tests/Rules/NewOverSettersRule/NewOverSettersRuleTest.php index ce3ed092..3f47bb25 100644 --- a/tests/Rules/NewOverSettersRule/NewOverSettersRuleTest.php +++ b/tests/Rules/NewOverSettersRule/NewOverSettersRuleTest.php @@ -49,6 +49,7 @@ public static function provideData(): Iterator yield [__DIR__ . '/Fixture/SkipCalledOnlyOnce.php', []]; yield [__DIR__ . '/Fixture/SkipSomeKernel.php', []]; + yield [__DIR__ . '/Fixture/SkipController.php', []]; yield [__DIR__ . '/Fixture/SkipEntity.php', []]; yield [__DIR__ . '/Fixture/SkipAttributeEntity.php', []]; yield [__DIR__ . '/Fixture/SkipNotSetterCall.php', []]; diff --git a/tests/Rules/NewOverSettersRule/Source/SomeController.php b/tests/Rules/NewOverSettersRule/Source/SomeController.php new file mode 100644 index 00000000..494d1f8d --- /dev/null +++ b/tests/Rules/NewOverSettersRule/Source/SomeController.php @@ -0,0 +1,11 @@ +