YamlFileLoader::resolveServices

private YamlFileLoader::resolveServices($value)

Resolves services.

Parameters

string|array $value:

Return value

array|string|Reference

File

core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php, line 381

Class

YamlFileLoader
YamlFileLoader loads YAML files service definitions.

Namespace

Drupal\Core\DependencyInjection

Code

private function resolveServices($value) 
 {
  if (is_array($value)) {
    $value = array_map(array($this, 'resolveServices'), $value);
  }
  elseif (is_string($value) && 0 === strpos($value, '@=')) {
    // Not supported.
    //return new Expression(substr($value, 2));
    throw new InvalidArgumentException(sprintf("'%s' is an Expression, but expressions are not supported.", $value));
  }
  elseif (is_string($value) && 0 === strpos($value, '@')) {
    if (0 === strpos($value, '@@')) {
      $value = substr($value, 1);
      $invalidBehavior = null;
    }
    elseif (0 === strpos($value, '@?')) {
      $value = substr($value, 2);
      $invalidBehavior = ContainerInterface::IGNORE_ON_INVALID_REFERENCE;
    }
    else {
      $value = substr($value, 1);
      $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE;
    }

    if ('=' === substr($value, -1)) {
      $value = substr($value, 0, -1);
      $strict = false;
    }
    else {
      $strict = true;
    }

    if (null !== $invalidBehavior) {
      $value = new Reference($value, $invalidBehavior, $strict);
    }
  }

  return $value;
}
doc_Drupal
2016-10-29 09:57:00
Comments
Leave a Comment

Please login to continue.