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

Breadcrumb

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

function ContainerBuilder::compile

Compiles the container.

This method passes the container to compiler passes whose job is to manipulate and optimize the container.

The main compiler passes roughly do four things:

  • The extension configurations are merged;
  • Parameter values are resolved;
  • The parameter bag is frozen;
  • Extension loading is disabled.

Parameters

bool $resolveEnvPlaceholders Whether %env()% parameters should be resolved using the current: env vars or be replaced by uniquely identifiable placeholders. Set to "true" when you want to use the current ContainerBuilder directly, keep to "false" when the container is dumped instead.

Overrides Container::compile

1 method overrides ContainerBuilder::compile()
MergeExtensionConfigurationContainerBuilder::compile in vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php
Compiles the container.

File

vendor/symfony/dependency-injection/ContainerBuilder.php, line 799

Class

ContainerBuilder
ContainerBuilder is a DI container that provides an API to easily describe services.

Namespace

Symfony\Component\DependencyInjection

Code

public function compile(bool $resolveEnvPlaceholders = false) : void {
    $compiler = $this->getCompiler();
    if ($this->trackResources) {
        foreach ($compiler->getPassConfig()
            ->getPasses() as $pass) {
            $this->addObjectResource($pass);
        }
    }
    $bag = $this->getParameterBag();
    if ($resolveEnvPlaceholders && $bag instanceof EnvPlaceholderParameterBag) {
        $compiler->addPass(new ResolveEnvPlaceholdersPass(), PassConfig::TYPE_AFTER_REMOVING, -1000);
    }
    $compiler->compile($this);
    foreach ($this->definitions as $id => $definition) {
        if ($this->trackResources && $definition->isLazy()) {
            $this->getReflectionClass($definition->getClass());
        }
    }
    $this->extensionConfigs = [];
    if ($bag instanceof EnvPlaceholderParameterBag) {
        if ($resolveEnvPlaceholders) {
            $this->parameterBag = new ParameterBag($this->resolveEnvPlaceholders($bag->all(), true));
        }
        $this->envPlaceholders = $bag->getEnvPlaceholders();
    }
    parent::compile();
    foreach ($this->definitions + $this->aliasDefinitions as $id => $definition) {
        if ('.' === ($id[0] ?? '-')) {
            continue;
        }
        if (!$definition->isPublic() || $definition->isPrivate()) {
            $this->removedIds[$id] = true;
        }
    }
}

API Navigation

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