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

Breadcrumb

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

function StaticServiceDeprecatedServiceRule::processNode

File

vendor/mglaman/phpstan-drupal/src/Rules/Deprecations/StaticServiceDeprecatedServiceRule.php, line 32

Class

StaticServiceDeprecatedServiceRule
@implements Rule<Node\Expr\StaticCall>

Namespace

mglaman\PHPStanDrupal\Rules\Deprecations

Code

public function processNode(Node $node, Scope $scope) : array {
    if (!$node->name instanceof Node\Identifier) {
        return [];
    }
    $method_name = $node->name
        ->toString();
    if ($method_name !== 'service') {
        return [];
    }
    $class = $node->class;
    if ($class instanceof Node\Name) {
        $calledOnType = $scope->resolveTypeByName($class);
    }
    else {
        $calledOnType = $scope->getType($class);
    }
    $methodReflection = $scope->getMethodReflection($calledOnType, $node->name
        ->toString());
    if ($methodReflection === null) {
        return [];
    }
    $declaringClass = $methodReflection->getDeclaringClass();
    if ($declaringClass->getName() !== 'Drupal') {
        return [];
    }
    $serviceNameArg = $node->args[0];
    assert($serviceNameArg instanceof Node\Arg);
    $serviceName = $serviceNameArg->value;
    // @todo check if var, otherwise throw.
    // ACTUALLY what if it was a constant? can we use a resolver.
    if (!$serviceName instanceof Node\Scalar\String_) {
        return [];
    }
    $service = $this->serviceMap
        ->getService($serviceName->value);
    if ($service instanceof DrupalServiceDefinition && $service->isDeprecated()) {
        return [
            $service->getDeprecatedDescription(),
        ];
    }
    return [];
}

API Navigation

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