public function resolve(ResolvedClass $resolved)
{
$class = $resolved->getClass();
$pattern = new Proxy($class->getFullname());
if ($class->getParent() || $class->getInterfaces()) {
$deps = $class->getDependencies();
foreach ($deps as $dep) {
// does call any class ?
$dep = $this->searchClassNamed($dep, $this->classes);
if (!$dep || $dep->getFullname() === $class->getFullname()) {
continue;
}
// same parent ?
$sameKind = null !== $dep->getParent() && $dep->getParent() === $class->getParent();
// same interface ?
$sameKind = $sameKind || sizeof(array_intersect($class->getInterfaces(), $dep->getInterfaces())) > 0;
if ($sameKind) {
$pattern->setProxified($dep->getFullname());
$resolved->pushPattern($pattern);
return;
}
}
}
}