Final Class Yiisoft\Di\ExtensibleService
| Inheritance | Yiisoft\Di\ExtensibleService |
|---|---|
| Implements | Yiisoft\Definitions\Contract\DefinitionInterface |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Di\ExtensibleService | |
| addExtension() | Add an extension. | Yiisoft\Di\ExtensibleService |
| resolve() | Yiisoft\Di\ExtensibleService |
Method Details
| 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
) {
}
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;
}
| 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;
}
Signup or Login in order to comment.