/** * Get project environment * * @return string */ public function getEnvironment() { try { return (string) $this->container->get('thinframe.karma.environment'); } catch (\Exception $e) { return 'production'; } }
/** * 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); } } }
/** * Configure container * * @param ApplicationContainerBuilder $container */ public function configureContainer(ApplicationContainerBuilder $container) { foreach ($this->getExtensions() as $extension) { $container->registerExtension($extension); } foreach ($this->getCompilerPasses() as $compilerPass) { $container->addCompilerPass($compilerPass); } foreach ($this->getAwareDefinitions() as $definition) { $container->addAwareDefinition($definition); } }
/** * @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; }