Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ServicesConfigurator.php

function ServicesConfigurator::stack

Registers a stack of decorator services.

Parameters

InlineServiceConfigurator[]|ReferenceConfigurator[] $services:

File

vendor/symfony/dependency-injection/Loader/Configurator/ServicesConfigurator.php, line 151

Class

ServicesConfigurator
@author Nicolas Grekas <p@tchwork.com>

Namespace

Symfony\Component\DependencyInjection\Loader\Configurator

Code

public final function stack(string $id, array $services) : AliasConfigurator {
    foreach ($services as $i => $service) {
        if ($service instanceof InlineServiceConfigurator) {
            $definition = $service->definition
                ->setInstanceofConditionals($this->instanceof);
            $changes = $definition->getChanges();
            $definition->setAutowired((isset($changes['autowired']) ? $definition : $this->defaults)
                ->isAutowired());
            $definition->setAutoconfigured((isset($changes['autoconfigured']) ? $definition : $this->defaults)
                ->isAutoconfigured());
            $definition->setBindings(array_merge($this->defaults
                ->getBindings(), $definition->getBindings()));
            $definition->setChanges($changes);
            $services[$i] = $definition;
        }
        elseif (!$service instanceof ReferenceConfigurator) {
            throw new InvalidArgumentException(\sprintf('"%s()" expects a list of definitions as returned by "%s()" or "%s()", "%s" given at index "%s" for service "%s".', __METHOD__, InlineServiceConfigurator::FACTORY, ReferenceConfigurator::FACTORY, $service instanceof AbstractConfigurator ? $service::FACTORY . '()' : get_debug_type($service), $i, $id));
        }
    }
    $alias = $this->alias($id, '');
    $alias->definition = $this->set($id)
        ->parent('')
        ->args($services)
        ->tag('container.stack')->definition;
    return $alias;
}
RSS feed
Powered by Drupal