private function XmlDumper::convertParameters

Converts parameters.

Parameters

array $parameters:

string $type:

DOMElement $parent:

string $keyAttribute:

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

File

drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php, line 221

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 (is_object($value) && $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');
      }
    }
    elseif (is_object($value) && $value instanceof Definition) {
      $element
        ->setAttribute('type', 'service');
      $this
        ->addService($value, null, $element);
    }
    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);
  }
}