diff --git a/src/Rules/Classes/InstantiationRule.php b/src/Rules/Classes/InstantiationRule.php index 6f8b322975..506176a377 100644 --- a/src/Rules/Classes/InstantiationRule.php +++ b/src/Rules/Classes/InstantiationRule.php @@ -38,6 +38,9 @@ final class InstantiationRule implements Rule { + /** @var RestrictedMethodUsageExtension[] $extensions */ + private ?array $extensions = null; + public function __construct( private Container $container, private ReflectionProvider $reflectionProvider, @@ -207,10 +210,10 @@ private function checkClassName(string $class, bool $isName, Node $node, Scope $ ->build(); } - /** @var RestrictedMethodUsageExtension[] $restrictedUsageExtensions */ - $restrictedUsageExtensions = $this->container->getServicesByTag(RestrictedMethodUsageExtension::METHOD_EXTENSION_TAG); + /** @var RestrictedMethodUsageExtension[] $extensions */ + $extensions = $this->extensions ??= $this->container->getServicesByTag(RestrictedMethodUsageExtension::METHOD_EXTENSION_TAG); - foreach ($restrictedUsageExtensions as $extension) { + foreach ($extensions as $extension) { $restrictedUsage = $extension->isRestrictedMethodUsage($constructorReflection, $scope); if ($restrictedUsage === null) { continue;