Skip to content

Commit

Permalink
DependencyResolver - @method, @property, @extends, `@implements…
Browse files Browse the repository at this point in the history
…` tags
  • Loading branch information
ondrejmirtes committed Oct 20, 2022
1 parent be6e7ce commit ec5b633
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions src/Dependency/DependencyResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,59 @@ private function addClassToDependencies(string $className, array &$dependenciesR
}
}

foreach ($classReflection->getPropertyTags() as $propertyTag) {
foreach ($propertyTag->getType()->getReferencedClasses() as $referencedClass) {
if (!$this->reflectionProvider->hasClass($referencedClass)) {
continue;
}
$dependenciesReflections[] = $this->reflectionProvider->getClass($referencedClass);
}
}

foreach ($classReflection->getMethodTags() as $methodTag) {
foreach ($methodTag->getReturnType()->getReferencedClasses() as $referencedClass) {
if (!$this->reflectionProvider->hasClass($referencedClass)) {
continue;
}
$dependenciesReflections[] = $this->reflectionProvider->getClass($referencedClass);
}
foreach ($methodTag->getParameters() as $parameter) {
foreach ($parameter->getType()->getReferencedClasses() as $referencedClass) {
if (!$this->reflectionProvider->hasClass($referencedClass)) {
continue;
}
$dependenciesReflections[] = $this->reflectionProvider->getClass($referencedClass);
}
if ($parameter->getDefaultValue() === null) {
continue;
}
foreach ($parameter->getDefaultValue()->getReferencedClasses() as $referencedClass) {
if (!$this->reflectionProvider->hasClass($referencedClass)) {
continue;
}
$dependenciesReflections[] = $this->reflectionProvider->getClass($referencedClass);
}
}
}

foreach ($classReflection->getExtendsTags() as $extendsTag) {
foreach ($extendsTag->getType()->getReferencedClasses() as $referencedClass) {
if (!$this->reflectionProvider->hasClass($referencedClass)) {
continue;
}
$dependenciesReflections[] = $this->reflectionProvider->getClass($referencedClass);
}
}

foreach ($classReflection->getImplementsTags() as $implementsTag) {
foreach ($implementsTag->getType()->getReferencedClasses() as $referencedClass) {
if (!$this->reflectionProvider->hasClass($referencedClass)) {
continue;
}
$dependenciesReflections[] = $this->reflectionProvider->getClass($referencedClass);
}
}

$classReflection = $classReflection->getParentClass();
} while ($classReflection !== null);
}
Expand Down

0 comments on commit ec5b633

Please sign in to comment.