/** * Returns arguments as valid php types. * * @param \DOMElement $node * @param string $name * @param bool $lowercase * * @return mixed */ private function getArgumentsAsPhp(\DOMElement $node, $name, $lowercase = true) { $arguments = []; foreach ($this->getChildren($node, $name) as $arg) { if ($arg->hasAttribute('name')) { $arg->setAttribute('key', $arg->getAttribute('name')); } if (!$arg->hasAttribute('key')) { $key = !$arguments ? 0 : max(array_keys($arguments)) + 1; } else { $key = $arg->getAttribute('key'); } // parameter keys are case insensitive if ('parameter' == $name && $lowercase) { $key = strtolower($key); } // this is used by DefinitionDecorator to overwrite a specific // argument of the parent definition if ($arg->hasAttribute('index')) { $key = 'index_' . $arg->getAttribute('index'); } switch ($arg->getAttribute('type')) { case 'service': $arguments[$key] = $this->containerConfiguration->createReferenceFor($arg->getAttribute('id'), $arg->getAttribute('container') ?: null); break; case 'expression': $arguments[$key] = new Expression($arg->nodeValue); break; case 'collection': $arguments[$key] = $this->getArgumentsAsPhp($arg, $name, false); break; case 'string': $arguments[$key] = $arg->nodeValue; break; case 'constant': $arguments[$key] = constant($arg->nodeValue); break; default: $arguments[$key] = XmlUtils::phpize($arg->nodeValue); } } return $arguments; }
/** * @param string $containerName * @param string $containerId */ public function addContainer($containerName, $containerId) { $this->containerConfiguration->addContainer($containerName, $containerId); }