You are here

private function XmlDumper::convertParameters in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/dependency-injection/Dumper/XmlDumper.php \Symfony\Component\DependencyInjection\Dumper\XmlDumper::convertParameters()

Converts parameters.

Parameters

array $parameters:

string $type:

\DOMElement $parent:

string $keyAttribute:

3 calls to XmlDumper::convertParameters()
XmlDumper::addMethodCalls in vendor/symfony/dependency-injection/Dumper/XmlDumper.php
Adds method calls.
XmlDumper::addParameters in vendor/symfony/dependency-injection/Dumper/XmlDumper.php
Adds parameters.
XmlDumper::addService in vendor/symfony/dependency-injection/Dumper/XmlDumper.php
Adds a service.

File

vendor/symfony/dependency-injection/Dumper/XmlDumper.php, line 265

Class

XmlDumper
XmlDumper dumps a service container as an XML string.

Namespace

Symfony\Component\DependencyInjection\Dumper

Code

private function convertParameters($parameters, $type, \DOMElement $parent, $keyAttribute = 'key') {
  $withKeys = array_keys($parameters) !== range(0, count($parameters) - 1);
  foreach ($parameters as $key => $value) {
    $element = $this->document
      ->createElement($type);
    if ($withKeys) {
      $element
        ->setAttribute($keyAttribute, $key);
    }
    if (is_array($value)) {
      $element
        ->setAttribute('type', 'collection');
      $this
        ->convertParameters($value, $type, $element, 'key');
    }
    elseif ($value instanceof Reference) {
      $element
        ->setAttribute('type', 'service');
      $element
        ->setAttribute('id', (string) $value);
      $behaviour = $value
        ->getInvalidBehavior();
      if ($behaviour == ContainerInterface::NULL_ON_INVALID_REFERENCE) {
        $element
          ->setAttribute('on-invalid', 'null');
      }
      elseif ($behaviour == ContainerInterface::IGNORE_ON_INVALID_REFERENCE) {
        $element
          ->setAttribute('on-invalid', 'ignore');
      }
      if (!$value
        ->isStrict()) {
        $element
          ->setAttribute('strict', 'false');
      }
    }
    elseif ($value instanceof Definition) {
      $element
        ->setAttribute('type', 'service');
      $this
        ->addService($value, null, $element);
    }
    elseif ($value instanceof Expression) {
      $element
        ->setAttribute('type', 'expression');
      $text = $this->document
        ->createTextNode(self::phpToXml((string) $value));
      $element
        ->appendChild($text);
    }
    else {
      if (in_array($value, array(
        'null',
        'true',
        'false',
      ), true)) {
        $element
          ->setAttribute('type', 'string');
      }
      $text = $this->document
        ->createTextNode(self::phpToXml($value));
      $element
        ->appendChild($text);
    }
    $parent
      ->appendChild($element);
  }
}