0 follower

Final Class Yiisoft\Definitions\Helpers\DefinitionResolver

InheritanceYiisoft\Definitions\Helpers\DefinitionResolver

Public Methods

Hide inherited methods

Method Description Defined By
ensureResolvable() Yiisoft\Definitions\Helpers\DefinitionResolver
resolve() This function resolves a definition recursively, checking for loops. Yiisoft\Definitions\Helpers\DefinitionResolver
resolveArray() Resolves dependencies by replacing them with the actual object instances. Yiisoft\Definitions\Helpers\DefinitionResolver

Method Details

Hide inherited methods

ensureResolvable() public static method

public static array|Yiisoft\Definitions\Contract\ReferenceInterface|Yiisoft\Definitions\ValueDefinition ensureResolvable ( mixed $value )
$value mixed
throws Yiisoft\Definitions\Exception\InvalidConfigException

                public static function ensureResolvable(mixed $value): array|ReferenceInterface|ValueDefinition
{
    if ($value instanceof ReferenceInterface || is_array($value)) {
        return $value;
    }
    if ($value instanceof DefinitionInterface) {
        throw new InvalidConfigException(
            'Only references are allowed in constructor arguments, a definition object was provided: ' .
            var_export($value, true),
        );
    }
    return new ValueDefinition($value);
}

            
resolve() public static method

This function resolves a definition recursively, checking for loops.

public static mixed resolve ( \Psr\Container\ContainerInterface $container, \Psr\Container\ContainerInterface|null $referenceContainer, mixed $definition )
$container \Psr\Container\ContainerInterface
$referenceContainer \Psr\Container\ContainerInterface|null
$definition mixed

Definition to resolve.

                public static function resolve(
    ContainerInterface $container,
    ?ContainerInterface $referenceContainer,
    mixed $definition,
): mixed {
    if ($definition instanceof DefinitionInterface) {
        $container = $referenceContainer !== null && $definition instanceof ReferenceInterface
            ? $referenceContainer
            : $container;
        $definition = $definition->resolve($container);
    } elseif (is_array($definition)) {
        return self::resolveArray($container, $referenceContainer, $definition);
    }
    return $definition;
}

            
resolveArray() public static method

Resolves dependencies by replacing them with the actual object instances.

public static array resolveArray ( \Psr\Container\ContainerInterface $container, \Psr\Container\ContainerInterface|null $referenceContainer, array $definitions )
$container \Psr\Container\ContainerInterface

Container to get dependencies from.

$referenceContainer \Psr\Container\ContainerInterface|null

Container to get references from.

$definitions array

Definitions to resolve.

return array

The resolved dependencies.

                public static function resolveArray(
    ContainerInterface $container,
    ?ContainerInterface $referenceContainer,
    array $definitions,
): array {
    $result = [];
    foreach ($definitions as $key => $definition) {
        // Don't resolve variadic parameters
        if ($definition instanceof ParameterDefinition && $definition->isVariadic()) {
            continue;
        }
        $result[$key] = self::resolve($container, $referenceContainer, $definition);
    }
    return $result;
}