Example #1
0
 protected function recursiveRawDecode(array &$data, \SimpleXMLElement $node)
 {
     if ($node->count()) {
         if (!array_key_exists($node->getName(), $data)) {
             $data[$node->getName()] = [];
         }
         $row =& $data[$node->getName()];
         foreach ($node->children() as $child) {
             $this->recursiveRawDecode($row, $child);
         }
     } else {
         $newRow = array();
         /** @var SimpleXMLElement $attribute */
         foreach ($node->attributes() as $attribute) {
             $newRow[$attribute->getName()] = $node->getAttributeAsPhp($attribute->getName());
         }
         if ($node->getName() === $this->nodeName) {
             $data[] = $newRow;
         } else {
             $data[$node->getName()] = $newRow;
         }
     }
 }
 /**
  * Parses an individual ehough_iconic_Definition
  *
  * @param string           $id
  * @param SimpleXMLElement $service
  * @param string           $file
  */
 private function parseDefinition($id, $service, $file)
 {
     if ((string) $service['alias']) {
         $public = true;
         if (isset($service['public'])) {
             $public = $service->getAttributeAsPhp('public');
         }
         $this->container->setAlias($id, new ehough_iconic_Alias((string) $service['alias'], $public));
         return;
     }
     if (isset($service['parent'])) {
         $definition = new ehough_iconic_DefinitionDecorator((string) $service['parent']);
     } else {
         $definition = new ehough_iconic_Definition();
     }
     foreach (array('class', 'scope', 'public', 'factory-class', 'factory-method', 'factory-service', 'synthetic', 'synchronized', 'lazy', 'abstract') as $key) {
         if (isset($service[$key])) {
             $method = 'set' . str_replace('-', '', $key);
             $definition->{$method}((string) $service->getAttributeAsPhp($key));
         }
     }
     if ($service->file) {
         $definition->setFile((string) $service->file);
     }
     $definition->setArguments($service->getArgumentsAsPhp('argument'));
     $definition->setProperties($service->getArgumentsAsPhp('property'));
     if (isset($service->configurator)) {
         if (isset($service->configurator['function'])) {
             $definition->setConfigurator((string) $service->configurator['function']);
         } else {
             if (isset($service->configurator['service'])) {
                 $class = new ehough_iconic_Reference((string) $service->configurator['service'], ehough_iconic_ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false);
             } else {
                 $class = (string) $service->configurator['class'];
             }
             $definition->setConfigurator(array($class, (string) $service->configurator['method']));
         }
     }
     foreach ($service->call as $call) {
         $definition->addMethodCall((string) $call['method'], $call->getArgumentsAsPhp('argument'));
     }
     foreach ($service->tag as $tag) {
         $parameters = array();
         foreach ($tag->attributes() as $name => $value) {
             if ('name' === $name) {
                 continue;
             }
             $parameters[$name] = ehough_iconic_SimpleXMLElement::phpize($value);
         }
         $definition->addTag((string) $tag['name'], $parameters);
     }
     $this->container->setDefinition($id, $definition);
 }