Exemplo n.º 1
0
 static function parseServices(Nette\DI\ContainerBuilder $container, array $config)
 {
     $all = isset($config['services']) ? $config['services'] : array();
     $all += isset($config['factories']) ? $config['factories'] : array();
     uasort($all, function ($a, $b) {
         return strcmp(Config::isInheriting($a), Config::isInheriting($b));
     });
     foreach ($all as $name => $def) {
         if ($parent = Config::takeParent($def)) {
             $container->removeDefinition($name);
             $definition = $container->addDefinition($name);
             if ($parent !== Config::OVERWRITE) {
                 foreach ($container->getDefinition($parent) as $k => $v) {
                     $definition->{$k} = $v;
                 }
             }
         } elseif ($container->hasDefinition($name)) {
             $definition = $container->getDefinition($name);
         } else {
             $definition = $container->addDefinition($name);
         }
         try {
             static::parseService($definition, $def, isset($config['services'][$name]));
         } catch (\Exception $e) {
             throw new Nette\DI\ServiceCreationException("Service '{$name}': " . $e->getMessage(), NULL, $e);
         }
     }
 }