30
30
use PHPStan \DependencyInjection \Reflection \DirectClassReflectionExtensionRegistryProvider ;
31
31
use PHPStan \DependencyInjection \Type \DirectDynamicReturnTypeExtensionRegistryProvider ;
32
32
use PHPStan \DependencyInjection \Type \DirectOperatorTypeSpecifyingExtensionRegistryProvider ;
33
+ use PHPStan \DependencyInjection \Type \DynamicReturnTypeExtensionRegistryProvider ;
34
+ use PHPStan \DependencyInjection \Type \OperatorTypeSpecifyingExtensionRegistryProvider ;
33
35
use PHPStan \File \FileHelper ;
34
36
use PHPStan \File \SimpleRelativePathHelper ;
35
37
use PHPStan \Parser \CachedParser ;
@@ -143,24 +145,34 @@ public function getParser(): \PHPStan\Parser\Parser
143
145
144
146
/**
145
147
* @api
146
- * @param \PHPStan\Type\DynamicMethodReturnTypeExtension[] $dynamicMethodReturnTypeExtensions
147
- * @param \PHPStan\Type\DynamicStaticMethodReturnTypeExtension[] $dynamicStaticMethodReturnTypeExtensions
148
- * @return \PHPStan\Broker\Broker
148
+ * @return \PHPStan\Reflection\ReflectionProvider
149
149
*/
150
- public function createBroker (
151
- array $ dynamicMethodReturnTypeExtensions = [],
152
- array $ dynamicStaticMethodReturnTypeExtensions = []
153
- ): Broker
150
+ public function createBroker (): ReflectionProvider
154
151
{
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
+
155
167
$ 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 ()),
158
170
array_merge (self ::getContainer ()->getServicesByTag (BrokerFactory::DYNAMIC_FUNCTION_RETURN_TYPE_EXTENSION_TAG ), $ this ->getDynamicFunctionReturnTypeExtensions ())
159
171
);
160
172
$ operatorTypeSpecifyingExtensionRegistryProvider = new DirectOperatorTypeSpecifyingExtensionRegistryProvider (
161
173
$ this ->getOperatorTypeSpecifyingExtensions ()
162
174
);
163
- $ reflectionProvider = $ this -> createReflectionProvider ();
175
+
164
176
$ broker = new Broker (
165
177
$ reflectionProvider ,
166
178
$ dynamicReturnTypeExtensionRegistryProvider ,
@@ -172,21 +184,6 @@ public function createBroker(
172
184
$ operatorTypeSpecifyingExtensionRegistryProvider ->setBroker ($ broker );
173
185
$ this ->getClassReflectionExtensionRegistryProvider ()->setBroker ($ broker );
174
186
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
-
190
187
return $ reflectionProvider ;
191
188
}
192
189
@@ -563,15 +560,15 @@ public function getClassReflectionExtensionRegistryProvider(): DirectClassReflec
563
560
return $ this ->classReflectionExtensionRegistryProvider ;
564
561
}
565
562
566
- public function createScopeFactory (Broker $ broker , TypeSpecifier $ typeSpecifier ): ScopeFactory
563
+ public function createScopeFactory (ReflectionProvider $ reflectionProvider , TypeSpecifier $ typeSpecifier ): ScopeFactory
567
564
{
568
565
$ container = self ::getContainer ();
569
566
570
567
return new DirectScopeFactory (
571
568
MutatingScope::class,
572
- $ broker ,
573
- $ broker -> getDynamicReturnTypeExtensionRegistryProvider ( ),
574
- $ broker -> getOperatorTypeSpecifyingExtensionRegistryProvider ( ),
569
+ $ reflectionProvider ,
570
+ $ container -> getByType (DynamicReturnTypeExtensionRegistryProvider::class ),
571
+ $ container -> getByType (OperatorTypeSpecifyingExtensionRegistryProvider::class ),
575
572
new \PhpParser \PrettyPrinter \Standard (),
576
573
$ typeSpecifier ,
577
574
new PropertyReflectionFinder (),
0 commit comments