Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ServiceMap.php

function ServiceMap::setDrupalServices

File

vendor/mglaman/phpstan-drupal/src/Drupal/ServiceMap.php, line 25

Class

ServiceMap

Namespace

mglaman\PHPStanDrupal\Drupal

Code

public function setDrupalServices(array $drupalServices) : void {
    self::$services = [];
    $decorators = [];
    foreach ($drupalServices as $serviceId => $serviceDefinition) {
        if (isset($serviceDefinition['alias'], $drupalServices[$serviceDefinition['alias']])) {
            $serviceDefinition = $drupalServices[$serviceDefinition['alias']];
        }
        if (isset($serviceDefinition['parent'], $drupalServices[$serviceDefinition['parent']])) {
            $serviceDefinition = $this->resolveParentDefinition($serviceDefinition['parent'], $serviceDefinition, $drupalServices);
        }
        if (isset($serviceDefinition['decorates'])) {
            $decorators[$serviceDefinition['decorates']][] = $serviceId;
        }
        // @todo support factories
        if (!isset($serviceDefinition['class'])) {
            if (class_exists($serviceId)) {
                $serviceDefinition['class'] = $serviceId;
            }
            else {
                continue;
            }
        }
        self::$services[$serviceId] = new DrupalServiceDefinition((string) $serviceId, $serviceDefinition['class'], $serviceDefinition['public'] ?? true, $serviceDefinition['alias'] ?? null);
        $deprecated = $serviceDefinition['deprecated'] ?? null;
        if ($deprecated) {
            if (is_array($deprecated) && isset($deprecated['message'])) {
                $deprecated = $deprecated['message'];
            }
            $deprecated = str_replace('%service_id%', $serviceId, $deprecated);
            if (isset($serviceDefinition['alias'])) {
                $deprecated = str_replace('%alias_id%', $serviceDefinition['alias'], $deprecated);
            }
            self::$services[$serviceId]->setDeprecated(true, $deprecated);
        }
    }
    foreach ($decorators as $decorated_service_id => $services) {
        foreach ($services as $dcorating_service_id) {
            if (!isset(self::$services[$decorated_service_id])) {
                continue;
            }
            self::$services[$decorated_service_id]->addDecorator(self::$services[$dcorating_service_id]);
        }
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal