Nette\DI\ContainerBuilder::getByType PHP Метод

getByType() публичный Метод

Resolves service name by type.
public getByType ( $class ) : string | null
Результат string | null service name or NULL
    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);
        }
    }

Usage Example

Пример #1
0
 /**
  * @param ContainerBuilder $builder
  * @param string $type
  * @return string
  * @throws ServiceNotFoundException
  */
 private static function getDefinitionNameByTypeChecked(ContainerBuilder $builder, $type)
 {
     $defName = $builder->getByType($type);
     if ($defName === null) {
         throw new ServiceNotFoundException();
     }
     return $defName;
 }
All Usage Examples Of Nette\DI\ContainerBuilder::getByType