protected function processExtensions(array $config, Container $container, $alias) { $extensions = !empty($config["extensions"]) ? $config["extensions"] : []; foreach ($extensions as $service => $extension) { if (!$container->offsetExists($service)) { $aliasedService = $this->referenceResolver->aliasThisKey($service, $alias); if (!$container->offsetExists($aliasedService)) { throw new ConfigException(sprintf("Cannot use extension for the service '%s' as it does not exist", $service)); } $service = $aliasedService; } foreach ($extension as $i => $call) { $extension[$i] = $this->processCall($call, $i, $service . " (extension)"); } if (!empty($extension)) { $container->extend($service, function ($object) use($extension, $alias) { return $this->serviceFactory->extendService($object, $extension, $alias); }); } } }