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 ensureResolvable( mixed $value ): array|Yiisoft\Definitions\Contract\ReferenceInterface|Yiisoft\Definitions\ValueDefinition
$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 resolve( \Psr\Container\ContainerInterface $container, \Psr\Container\ContainerInterface|null $referenceContainer, mixed $definition ): mixed
$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 resolveArray( \Psr\Container\ContainerInterface $container, \Psr\Container\ContainerInterface|null $referenceContainer, array $definitions ): array
$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;
}