public function getByType($class)
{
$class = ltrim($class, '\\');
if ($this->currentService !== NULL && is_a($this->definitions[$this->currentService]->getClass(), $class, TRUE)) {
return $this->currentService;
}
$classes = $this->getClassList();
if (empty($classes[$class][TRUE])) {
self::checkCase($class);
return;
} elseif (count($classes[$class][TRUE]) === 1) {
return $classes[$class][TRUE][0];
} else {
$list = $classes[$class][TRUE];
$hint = count($list) === 2 && ($tmp = strpos($list[0], '.') xor strpos($list[1], '.')) ? '. If you want to overwrite service ' . $list[$tmp ? 0 : 1] . ', give it proper name.' : '';
throw new ServiceCreationException("Multiple services of type {$class} found: " . implode(', ', $list) . $hint);
}
}