/** * Loads a specific configuration. * * @param array $config An array of configuration values * @param ContainerBuilder $container A ContainerBuilder instance * * @throws \InvalidArgumentException When provided tag is not defined in this extension * * @api */ public function load(array $config, ContainerBuilder $container) { if (isset($config[0])) { foreach ($config[0] as $configFile) { $this->applicationContainer->import($configFile); } } }
/** * @param array $loadedApplications * * @return ApplicationContainerBuilder */ public function getApplicationContainer(&$loadedApplications = array()) { if (!$this->containerBuilderCompiled) { if (count($loadedApplications) == 0) { $parent = true; } else { $parent = false; } foreach ($this->parentApplications as $app) { if (in_array(get_class($app), $loadedApplications)) { continue; } $loadedApplications[] = get_class($app); $this->containerBuilder->merge($app->getApplicationContainer($loadedApplications)); } $this->configure($this->containerBuilder); foreach ($this->getConfigurationFiles() as $file) { $this->containerBuilder->import($file); } if ($parent) { //setting syntetic services $definition = new Definition(); $definition->setSynthetic(true); //inserting container as service $this->containerBuilder->setDefinition('container', $definition); $this->containerBuilder->set('container', $this->containerBuilder); //inserting application as service $this->containerBuilder->setDefinition('application', clone $definition); $this->containerBuilder->set('application', $this); $this->containerBuilder->compile(); } } return $this->containerBuilder; }