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

Breadcrumb

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

function RemoveUnusedDefinitionsPass::process

Processes the ContainerBuilder to remove unused definitions.

Overrides AbstractRecursivePass::process

File

vendor/symfony/dependency-injection/Compiler/RemoveUnusedDefinitionsPass.php, line 32

Class

RemoveUnusedDefinitionsPass
Removes unused service definitions from the container.

Namespace

Symfony\Component\DependencyInjection\Compiler

Code

public function process(ContainerBuilder $container) : void {
    try {
        $this->enableExpressionProcessing();
        $this->container = $container;
        $connectedIds = [];
        $aliases = $container->getAliases();
        foreach ($aliases as $id => $alias) {
            if ($alias->isPublic()) {
                $this->connectedIds[] = (string) $aliases[$id];
            }
        }
        foreach ($container->getDefinitions() as $id => $definition) {
            if ($definition->isPublic()) {
                $connectedIds[$id] = true;
                $this->processValue($definition);
            }
        }
        while ($this->connectedIds) {
            $ids = $this->connectedIds;
            $this->connectedIds = [];
            foreach ($ids as $id) {
                if (!isset($connectedIds[$id]) && $container->hasDefinition($id)) {
                    $connectedIds[$id] = true;
                    $this->processValue($container->getDefinition($id));
                }
            }
        }
        foreach ($container->getDefinitions() as $id => $definition) {
            if (!isset($connectedIds[$id])) {
                $container->removeDefinition($id);
                $container->resolveEnvPlaceholders(!$definition->hasErrors() ? serialize($definition) : $definition);
                $container->log($this, \sprintf('Removed service "%s"; reason: unused.', $id));
            }
        }
    } finally {
        $this->container = null;
        $this->connectedIds = [];
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal