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

Breadcrumb

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

function PhpDumper::addInlineService

3 calls to PhpDumper::addInlineService()
PhpDumper::addInlineReference in vendor/symfony/dependency-injection/Dumper/PhpDumper.php
PhpDumper::addInlineVariables in vendor/symfony/dependency-injection/Dumper/PhpDumper.php
PhpDumper::addService in vendor/symfony/dependency-injection/Dumper/PhpDumper.php

File

vendor/symfony/dependency-injection/Dumper/PhpDumper.php, line 1036

Class

PhpDumper
PhpDumper dumps a service container as a PHP class.

Namespace

Symfony\Component\DependencyInjection\Dumper

Code

private function addInlineService(string $id, Definition $definition, ?Definition $inlineDef = null, bool $forConstructor = true) : string {
    $code = '';
    if ($isSimpleInstance = $isRootInstance = null === $inlineDef) {
        foreach ($this->serviceCalls as $targetId => [
            $callCount,
            $behavior,
            $byConstructor,
        ]) {
            if ($byConstructor && isset($this->circularReferences[$id][$targetId]) && !$this->circularReferences[$id][$targetId] && !($this->hasProxyDumper && $definition->isLazy())) {
                $code .= $this->addInlineReference($id, $definition, $targetId, $forConstructor);
            }
        }
    }
    if (isset($this->definitionVariables[$inlineDef ??= $definition])) {
        return $code;
    }
    $arguments = [
        $inlineDef->getArguments(),
        $inlineDef->getFactory(),
    ];
    $code .= $this->addInlineVariables($id, $definition, $arguments, $forConstructor);
    if ($arguments = array_filter([
        $inlineDef->getProperties(),
        $inlineDef->getMethodCalls(),
        $inlineDef->getConfigurator(),
    ])) {
        $isSimpleInstance = false;
    }
    elseif ($definition !== $inlineDef && 2 > $this->inlinedDefinitions[$inlineDef]) {
        return $code;
    }
    $asGhostObject = false;
    $isProxyCandidate = $this->isProxyCandidate($inlineDef, $asGhostObject, $id);
    if (isset($this->definitionVariables[$inlineDef])) {
        $isSimpleInstance = false;
    }
    else {
        $name = $definition === $inlineDef ? 'instance' : $this->getNextVariableName();
        $this->definitionVariables[$inlineDef] = new Variable($name);
        $code .= '' !== $code ? "\n" : '';
        if ('instance' === $name) {
            $code .= $this->addServiceInstance($id, $definition, $isSimpleInstance);
        }
        else {
            $code .= $this->addNewInstance($inlineDef, '        $' . $name . ' = ', $id);
        }
        if ('' !== ($inline = $this->addInlineVariables($id, $definition, $arguments, false))) {
            $code .= "\n" . $inline . "\n";
        }
        elseif ($arguments && 'instance' === $name) {
            $code .= "\n";
        }
        $code .= $this->addServiceProperties($inlineDef, $name);
        $code .= $this->addServiceMethodCalls($inlineDef, $name, !$isProxyCandidate && $inlineDef->isShared() && !isset($this->singleUsePrivateIds[$id]) ? $id : null);
        $code .= $this->addServiceConfigurator($inlineDef, $name);
    }
    if (!$isRootInstance || $isSimpleInstance) {
        return $code;
    }
    return $code . "\n        return \$instance;\n";
}
RSS feed
Powered by Drupal