/**
  * Processes the ContainerBuilder to resolve parameter placeholders.
  *
  * @param ehough_iconic_ContainerBuilder $container
  *
  * @throws ehough_iconic_exception_ParameterNotFoundException
  */
 public function process(ehough_iconic_ContainerBuilder $container)
 {
     $parameterBag = $container->getParameterBag();
     foreach ($container->getDefinitions() as $id => $definition) {
         try {
             $definition->setClass($parameterBag->resolveValue($definition->getClass()));
             $definition->setFile($parameterBag->resolveValue($definition->getFile()));
             $definition->setArguments($parameterBag->resolveValue($definition->getArguments()));
             $calls = array();
             foreach ($definition->getMethodCalls() as $name => $arguments) {
                 $calls[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($arguments);
             }
             $definition->setMethodCalls($calls);
             $definition->setProperties($parameterBag->resolveValue($definition->getProperties()));
         } catch (ehough_iconic_exception_ParameterNotFoundException $e) {
             $e->setSourceId($id);
             throw $e;
         }
     }
     $aliases = array();
     foreach ($container->getAliases() as $name => $target) {
         $aliases[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($target);
     }
     $container->setAliases($aliases);
     $parameterBag->resolve();
 }
예제 #2
0
 private function cloneContainer()
 {
     $parameterBag = new ehough_iconic_parameterbag_ParameterBag($this->container->getParameterBag()->all());
     $container = new ehough_iconic_ContainerBuilder($parameterBag);
     $container->setDefinitions($this->container->getDefinitions());
     $container->setAliases($this->container->getAliases());
     $container->setResources($this->container->getResources());
     foreach ($this->container->getScopes() as $scope => $parentScope) {
         $container->addScope(new ehough_iconic_Scope($scope, $parentScope));
     }
     foreach ($this->container->getExtensions() as $extension) {
         $container->registerExtension($extension);
     }
     return $container;
 }