• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/v2/IoC/Container.php
  • Класс: BitrixCatalogv2IoCContainer
  • Вызов: Container::resolveClassParameter
private function resolveClassParameter(ReflectionParameter $parameter, array $args = [])
{
	try
	{
		$type = $parameter->getType();
		if (($type instanceof ReflectionNamedType) && !$type->isBuiltin())
		{
			$className = $type->getName();
		}
		else
		{
			throw new ObjectNotFoundException('Not class type');
		}

		if ($className === static::class || is_subclass_of(static::class, $className))
		{
			return $this;
		}

		$dependency = $args[$className] ?? $this->get($className, $args);
	}
	catch (ObjectNotFoundException $exception)
	{
		if ($parameter->isDefaultValueAvailable())
		{
			$dependency = $parameter->getDefaultValue();
		}
		else
		{
			$name = $parameter->getName();
			throw new ObjectNotFoundException("Dependency {{$name}} not found.");
		}
	}

	return $dependency;
}