public function generateContainer(DI\Compiler $compiler)
{
$loader = $this->createLoader();
$compiler->addConfig(['parameters' => $this->parameters]);
$fileInfo = [];
foreach ($this->files as $info) {
if (is_scalar($info[0])) {
$fileInfo[] = "// source: {$info['0']} {$info['1']}";
$info[0] = $loader->load($info[0], $info[1]);
}
$compiler->addConfig($this->fixCompatibility($info[0]));
}
$compiler->addDependencies($loader->getDependencies());
$builder = $compiler->getContainerBuilder();
$builder->addExcludedClasses($this->autowireExcludedClasses);
foreach ($this->defaultExtensions as $name => $extension) {
list($class, $args) = is_string($extension) ? [$extension, []] : $extension;
if (class_exists($class)) {
$args = DI\Helpers::expand($args, $this->parameters, TRUE);
$compiler->addExtension($name, (new \ReflectionClass($class))->newInstanceArgs($args));
}
}
$this->onCompile($this, $compiler);
$classes = $compiler->compile();
return implode("\n", $fileInfo) . "\n\n" . $classes;
}