/**
  * Direct helper implementation:
  *  - return service if exists
  *  - else return parameter if exists
  *
  * @param  string $name
  */
 public function direct($name)
 {
     if ($this->_container->has($name)) {
         return $this->_container->getService($name);
     } else {
         if ($this->_container->getParameterBag()->has($name)) {
             return $this->_container->getParameter($name);
         }
     }
     return null;
 }
 /**
  * @param ContainerInterface $container
  * @param mixed $value
  *
  * @return mixed
  */
 private function resolveValue(ContainerInterface $container, $value)
 {
     if ($container instanceof Container) {
         // Use the container methods if available
         return $container->getParameterBag()->resolveValue($value);
     }
     // Fallback
     if (is_array($value)) {
         foreach ($value as $key => $val) {
             $value[$key] = $this->resolveValue($container, $val);
         }
         return $value;
     }
     if (!is_string($value)) {
         return $value;
     }
     $escapedValue = preg_replace_callback('/%%|%([^%\\s]++)%/', function ($match) use($container, $value) {
         // skip %%
         if (!isset($match[1])) {
             return '%%';
         }
         $resolved = $container->getParameter($match[1]);
         if (is_string($resolved) || is_numeric($resolved)) {
             return (string) $resolved;
         }
         throw new \RuntimeException(sprintf('The container parameter "%s" must be a string or a numeric, but it is of type %s.', $match[1], $value, gettype($resolved)));
     }, $value);
     return str_replace('%%', '%', $escapedValue);
 }
 /**
  * {@inheritDoc}
  */
 public function load($filename)
 {
     // The aim is not to throw an exception if the file is not found
     if (false === file_exists($filename)) {
         return array();
     }
     $yaml = Yaml::parse(file_get_contents($filename));
     $config = $this->container->getParameterBag()->resolveValue($yaml);
     $processor = new Processor();
     $configuration = new ServerConfiguration();
     $servers = $processor->processConfiguration($configuration, $config);
     $list = array();
     foreach ($servers as $name => $s) {
         $list[$name] = new Server($s['host'], $s['user'], $s['dir'], $s['password'], $s['port'], $s['options']);
     }
     return $list;
 }
 public function generateI18nPatterns($routeName, Route $route)
 {
     $patterns = [];
     /** @var \Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag $parameterBag */
     $parameterBag = $this->container->getParameterBag();
     $locales = $route->getOption('i18n_locales') ?: $this->locales;
     $locales = $parameterBag->resolveValue($locales);
     foreach ($locales as $locale) {
         $i18nPattern = $route->getPath();
         // prefix with locale if requested
         if (DefaultPatternGenerationStrategy::STRATEGY_PREFIX === $this->strategy || DefaultPatternGenerationStrategy::STRATEGY_PREFIX === $route->getOption('i18n_strategy') || DefaultPatternGenerationStrategy::STRATEGY_PREFIX_EXCEPT_DEFAULT === $this->strategy && $this->defaultLocale !== $locale) {
             $i18nPattern = '/{_locale}' . $i18nPattern;
             if (null !== $route->getOption('i18n_prefix')) {
                 $prefix = $route->getOption('i18n_prefix');
                 $prefix = $parameterBag->resolveValue($prefix);
                 $i18nPattern = $prefix . $i18nPattern;
             }
         }
         $patterns[$i18nPattern][] = $locale;
     }
     return $patterns;
 }
 public function __construct(ContainerInterface $container)
 {
     $this->session = $container->get('session');
     $this->session->start();
     $this->em = $container->get('doctrine.orm.entity_manager');
     // Load global yml configuration (ex: config.yml)
     $this->gParameterBag = $container->getParameterBag();
     // If found cache in session load it
     if ($this->session->has(self::SESSION_VARS_CACHE)) {
         $this->settingCache = $this->session->get(self::SESSION_VARS_CACHE);
     }
     // If session cache is not valid load from db
     if (is_null($this->settingCache)) {
         $this->loadSettingFromDb();
     }
 }