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\DumperCode
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";
}