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

Breadcrumb

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

function ForbiddenClassesSniff::checkReferences

*

Parameters

list<array{fullyQualifiedName: string, startPointer: int|null, endPointer: int|null}> $references: * @param array<string, (string|null)> $forbiddenNames

1 call to ForbiddenClassesSniff::checkReferences()
ForbiddenClassesSniff::process in vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/PHP/ForbiddenClassesSniff.php
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/PHP/ForbiddenClassesSniff.php, line 144

Class

ForbiddenClassesSniff

Namespace

SlevomatCodingStandard\Sniffs\PHP

Code

private function checkReferences(File $phpcsFile, int $tokenPointer, array $references, array $forbiddenNames, bool $isFixable = true) : void {
    $token = $phpcsFile->getTokens()[$tokenPointer];
    $details = [
        T_NEW => [
            'class',
            self::CODE_FORBIDDEN_CLASS,
        ],
        T_DOUBLE_COLON => [
            'class',
            self::CODE_FORBIDDEN_CLASS,
        ],
        T_EXTENDS => [
            'as a parent class',
            self::CODE_FORBIDDEN_PARENT_CLASS,
        ],
        T_IMPLEMENTS => [
            'interface',
            self::CODE_FORBIDDEN_INTERFACE,
        ],
        T_USE => [
            'trait',
            self::CODE_FORBIDDEN_TRAIT,
        ],
    ];
    foreach ($references as $reference) {
        if (!array_key_exists($reference['fullyQualifiedName'], $forbiddenNames)) {
            continue;
        }
        $alternative = $forbiddenNames[$reference['fullyQualifiedName']];
        [
            $nameType,
            $code,
        ] = $details[$token['code']];
        if ($alternative === null) {
            $phpcsFile->addError(sprintf('Usage of %s %s is forbidden.', $reference['fullyQualifiedName'], $nameType), $reference['startPointer'], $code);
        }
        elseif (!$isFixable) {
            $phpcsFile->addError(sprintf('Usage of %s %s is forbidden, use %s instead.', $reference['fullyQualifiedName'], $nameType, $alternative), $reference['startPointer'], $code);
        }
        else {
            $fix = $phpcsFile->addFixableError(sprintf('Usage of %s %s is forbidden, use %s instead.', $reference['fullyQualifiedName'], $nameType, $alternative), $reference['startPointer'], $code);
            if (!$fix) {
                continue;
            }
            $phpcsFile->fixer
                ->beginChangeset();
            FixerHelper::change($phpcsFile, $reference['startPointer'], $reference['endPointer'], $alternative);
            $phpcsFile->fixer
                ->endChangeset();
        }
    }
}

API Navigation

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