You are here

private function YamlFileLoader::parseDefinitions in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php \Drupal\Core\DependencyInjection\YamlFileLoader::parseDefinitions()
  2. 9 core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php \Drupal\Core\DependencyInjection\YamlFileLoader::parseDefinitions()

Parses definitions

Parameters

array $content:

string $file:

File

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

Class

YamlFileLoader
YamlFileLoader loads YAML files service definitions.

Namespace

Drupal\Core\DependencyInjection

Code

private function parseDefinitions($content, $file) {
  if (!isset($content['services'])) {
    return;
  }
  if (!is_array($content['services'])) {
    throw new InvalidArgumentException(sprintf('The "services" key should contain an array in %s. Check your YAML syntax.', $file));
  }

  // Some extensions split up their dependencies into multiple files.
  if (isset($content['_provider'])) {
    $provider = $content['_provider'];
  }
  else {
    $basename = basename($file);
    [
      $provider,
    ] = explode('.', $basename, 2);
  }
  $defaults = $this
    ->parseDefaults($content, $file);
  $defaults['tags'][] = [
    'name' => '_provider',
    'provider' => $provider,
  ];
  foreach ($content['services'] as $id => $service) {
    $this
      ->parseDefinition($id, $service, $file, $defaults);
  }
}