3030use PHPStan \DependencyInjection \Reflection \DirectClassReflectionExtensionRegistryProvider ;
3131use PHPStan \DependencyInjection \Type \DirectDynamicReturnTypeExtensionRegistryProvider ;
3232use PHPStan \DependencyInjection \Type \DirectOperatorTypeSpecifyingExtensionRegistryProvider ;
33+ use PHPStan \DependencyInjection \Type \DynamicReturnTypeExtensionRegistryProvider ;
34+ use PHPStan \DependencyInjection \Type \OperatorTypeSpecifyingExtensionRegistryProvider ;
3335use PHPStan \File \FileHelper ;
3436use PHPStan \File \SimpleRelativePathHelper ;
3537use PHPStan \Parser \CachedParser ;
@@ -143,24 +145,34 @@ public function getParser(): \PHPStan\Parser\Parser
143145
144146 /**
145147 * @api
146- * @param \PHPStan\Type\DynamicMethodReturnTypeExtension[] $dynamicMethodReturnTypeExtensions
147- * @param \PHPStan\Type\DynamicStaticMethodReturnTypeExtension[] $dynamicStaticMethodReturnTypeExtensions
148- * @return \PHPStan\Broker\Broker
148+ * @return \PHPStan\Reflection\ReflectionProvider
149149 */
150- public function createBroker (
151- array $ dynamicMethodReturnTypeExtensions = [],
152- array $ dynamicStaticMethodReturnTypeExtensions = []
153- ): Broker
150+ public function createBroker (): ReflectionProvider
154151 {
152+ return $ this ->createReflectionProvider ();
153+ }
154+
155+ /** @api */
156+ public function createReflectionProvider (): ReflectionProvider
157+ {
158+ $ setterReflectionProviderProvider = new ReflectionProvider \SetterReflectionProviderProvider ();
159+ $ staticReflectionProvider = $ this ->createStaticReflectionProvider ($ setterReflectionProviderProvider );
160+ $ reflectionProvider = $ this ->createReflectionProviderByParameters (
161+ $ this ->createRuntimeReflectionProvider ($ setterReflectionProviderProvider ),
162+ $ staticReflectionProvider ,
163+ self ::$ useStaticReflectionProvider
164+ );
165+ $ setterReflectionProviderProvider ->setReflectionProvider ($ reflectionProvider );
166+
155167 $ dynamicReturnTypeExtensionRegistryProvider = new DirectDynamicReturnTypeExtensionRegistryProvider (
156- array_merge (self ::getContainer ()->getServicesByTag (BrokerFactory::DYNAMIC_METHOD_RETURN_TYPE_EXTENSION_TAG ), $ dynamicMethodReturnTypeExtensions , $ this ->getDynamicMethodReturnTypeExtensions ()),
157- array_merge (self ::getContainer ()->getServicesByTag (BrokerFactory::DYNAMIC_STATIC_METHOD_RETURN_TYPE_EXTENSION_TAG ), $ dynamicStaticMethodReturnTypeExtensions , $ this ->getDynamicStaticMethodReturnTypeExtensions ()),
168+ array_merge (self ::getContainer ()->getServicesByTag (BrokerFactory::DYNAMIC_METHOD_RETURN_TYPE_EXTENSION_TAG ), $ this ->getDynamicMethodReturnTypeExtensions ()),
169+ array_merge (self ::getContainer ()->getServicesByTag (BrokerFactory::DYNAMIC_STATIC_METHOD_RETURN_TYPE_EXTENSION_TAG ), $ this ->getDynamicStaticMethodReturnTypeExtensions ()),
158170 array_merge (self ::getContainer ()->getServicesByTag (BrokerFactory::DYNAMIC_FUNCTION_RETURN_TYPE_EXTENSION_TAG ), $ this ->getDynamicFunctionReturnTypeExtensions ())
159171 );
160172 $ operatorTypeSpecifyingExtensionRegistryProvider = new DirectOperatorTypeSpecifyingExtensionRegistryProvider (
161173 $ this ->getOperatorTypeSpecifyingExtensions ()
162174 );
163- $ reflectionProvider = $ this -> createReflectionProvider ();
175+
164176 $ broker = new Broker (
165177 $ reflectionProvider ,
166178 $ dynamicReturnTypeExtensionRegistryProvider ,
@@ -172,21 +184,6 @@ public function createBroker(
172184 $ operatorTypeSpecifyingExtensionRegistryProvider ->setBroker ($ broker );
173185 $ this ->getClassReflectionExtensionRegistryProvider ()->setBroker ($ broker );
174186
175- return $ broker ;
176- }
177-
178- /** @api */
179- public function createReflectionProvider (): ReflectionProvider
180- {
181- $ setterReflectionProviderProvider = new ReflectionProvider \SetterReflectionProviderProvider ();
182- $ staticReflectionProvider = $ this ->createStaticReflectionProvider ($ setterReflectionProviderProvider );
183- $ reflectionProvider = $ this ->createReflectionProviderByParameters (
184- $ this ->createRuntimeReflectionProvider ($ setterReflectionProviderProvider ),
185- $ staticReflectionProvider ,
186- self ::$ useStaticReflectionProvider
187- );
188- $ setterReflectionProviderProvider ->setReflectionProvider ($ reflectionProvider );
189-
190187 return $ reflectionProvider ;
191188 }
192189
@@ -563,15 +560,15 @@ public function getClassReflectionExtensionRegistryProvider(): DirectClassReflec
563560 return $ this ->classReflectionExtensionRegistryProvider ;
564561 }
565562
566- public function createScopeFactory (Broker $ broker , TypeSpecifier $ typeSpecifier ): ScopeFactory
563+ public function createScopeFactory (ReflectionProvider $ reflectionProvider , TypeSpecifier $ typeSpecifier ): ScopeFactory
567564 {
568565 $ container = self ::getContainer ();
569566
570567 return new DirectScopeFactory (
571568 MutatingScope::class,
572- $ broker ,
573- $ broker -> getDynamicReturnTypeExtensionRegistryProvider ( ),
574- $ broker -> getOperatorTypeSpecifyingExtensionRegistryProvider ( ),
569+ $ reflectionProvider ,
570+ $ container -> getByType (DynamicReturnTypeExtensionRegistryProvider::class ),
571+ $ container -> getByType (OperatorTypeSpecifyingExtensionRegistryProvider::class ),
575572 new \PhpParser \PrettyPrinter \Standard (),
576573 $ typeSpecifier ,
577574 new PropertyReflectionFinder (),
0 commit comments