File tree Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -142,6 +142,9 @@ class ClassReflection
142
142
/** @var array<string, true> */
143
143
private static array $ resolvingTypeAliasImports = [];
144
144
145
+ /** @var array<string, bool> */
146
+ private array $ hasMethodCache = [];
147
+
145
148
/**
146
149
* @param PropertiesClassReflectionExtension[] $propertiesClassReflectionExtensions
147
150
* @param MethodsClassReflectionExtension[] $methodsClassReflectionExtensions
@@ -482,16 +485,28 @@ public function hasProperty(string $propertyName): bool
482
485
483
486
public function hasMethod (string $ methodName ): bool
484
487
{
488
+ $ key = sprintf ('%s-%s ' , $ methodName , $ this ->getCacheKey ());
489
+
490
+ if (array_key_exists ($ key , $ this ->hasMethodCache )) {
491
+ return $ this ->hasMethodCache [$ key ];
492
+ }
493
+
485
494
foreach ($ this ->methodsClassReflectionExtensions as $ extension ) {
486
495
if ($ extension ->hasMethod ($ this , $ methodName )) {
496
+ $ this ->hasMethodCache [$ key ] = true ;
497
+
487
498
return true ;
488
499
}
489
500
}
490
501
491
502
if ($ this ->requireExtendsMethodsClassReflectionExtension ->hasMethod ($ this , $ methodName )) {
503
+ $ this ->hasMethodCache [$ key ] = true ;
504
+
492
505
return true ;
493
506
}
494
507
508
+ $ this ->hasMethodCache [$ key ] = false ;
509
+
495
510
return false ;
496
511
}
497
512
You can’t perform that action at this time.
0 commit comments