0 follower

Final Class Yiisoft\Di\ExtensibleService

InheritanceYiisoft\Di\ExtensibleService
ImplementsYiisoft\Definitions\Contract\DefinitionInterface

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( mixed $definition, string $id )
$definition mixed

Definition to allow registering extensions for.

$id string

                public function __construct(
    private readonly mixed $definition,
    private readonly string $id
) {
}

            
addExtension() public method

Add an extension.

An extension is callable that returns a modified service object:

static function (ContainerInterface $container, $service) {
    return $service->withAnotherOption(42);
}
public void addExtension ( callable $closure )
$closure callable

An extension to register.

                public function addExtension(callable $closure): void
{
    $this->extensions[] = $closure;
}

            
resolve() public method

public mixed resolve ( \Psr\Container\ContainerInterface $container )
$container \Psr\Container\ContainerInterface

                public function resolve(ContainerInterface $container): mixed
{
    $service = DefinitionNormalizer::normalize($this->definition, $this->id)
        ->resolve($container);
    foreach ($this->extensions as $extension) {
        $result = $extension($container->get(ContainerInterface::class), $service);
        if ($result === null) {
            continue;
        }
        $service = $result;
    }
    return $service;
}