private function resolveServiceClass($name, $recursive = [])
{
if (isset($recursive[$name])) {
throw new ServiceCreationException(sprintf('Circular reference detected for services: %s.', implode(', ', array_keys($recursive))));
}
$recursive[$name] = TRUE;
$def = $this->definitions[$name];
$factoryClass = $def->getFactory() ? $this->resolveEntityClass($def->getFactory()->getEntity(), $recursive) : NULL;
// call always to check entities
if ($class = $def->getClass() ?: $factoryClass) {
if (!class_exists($class) && !interface_exists($class)) {
throw new ServiceCreationException("Class or interface '{$class}' used in service '{$name}' not found.");
}
self::checkCase($class);
$def->setClass($class);
if (count($recursive) === 1) {
$this->addDependency(new ReflectionClass($factoryClass ?: $class));
}
} elseif ($def->getAutowired()) {
throw new ServiceCreationException("Unknown type of service '{$name}', declare return type of factory method (for PHP 5 use annotation @return)");
}
return $class;
}