function InheritanceOfDeprecatedInterfaceRule::processNode
File
-
vendor/
phpstan/ phpstan-deprecation-rules/ src/ Rules/ Deprecations/ InheritanceOfDeprecatedInterfaceRule.php, line 33
Class
- InheritanceOfDeprecatedInterfaceRule
- @implements Rule<Interface_>
Namespace
PHPStan\Rules\DeprecationsCode
public function processNode(Node $node, Scope $scope) : array {
$interfaceName = isset($node->namespacedName) ? (string) $node->namespacedName : (string) $node->name;
try {
$interface = $this->reflectionProvider
->getClass($interfaceName);
} catch (ClassNotFoundException $e) {
return [];
}
if ($interface->isDeprecated()) {
return [];
}
$errors = [];
foreach ($node->extends as $parentInterfaceName) {
$parentInterfaceName = (string) $parentInterfaceName;
try {
$parentInterface = $this->reflectionProvider
->getClass($parentInterfaceName);
if (!$parentInterface->isDeprecated()) {
continue;
}
$description = $parentInterface->getDeprecatedDescription();
if ($description === null) {
$errors[] = RuleErrorBuilder::message(sprintf('Interface %s extends deprecated interface %s.', $interfaceName, $parentInterfaceName))->identifier('interface.extendsDeprecatedInterface')
->build();
}
else {
$errors[] = RuleErrorBuilder::message(sprintf("Interface %s extends deprecated interface %s:\n%s", $interfaceName, $parentInterfaceName, $description))->identifier('interface.extendsDeprecatedInterface')
->build();
}
} catch (ClassNotFoundException $e) {
// Other rules will notify if the interface is not found
}
}
return $errors;
}