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

Breadcrumb

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

function VariableAnalysisSniff::processVariableAsStaticOutsideClass

*

Parameters

File $phpcsFile: * @param int $stackPtr * @param string $varName * * @return bool

1 call to VariableAnalysisSniff::processVariableAsStaticOutsideClass()
VariableAnalysisSniff::processVariable in vendor/sirbrillig/phpcs-variable-analysis/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php
* Process a normal variable in the code. * * Most importantly, this function determines if the variable use is a "read" * (using the variable for something) or a "write" (an assignment) or, * sometimes, both at once. * …

File

vendor/sirbrillig/phpcs-variable-analysis/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php, line 1059

Class

VariableAnalysisSniff

Namespace

VariableAnalysis\Sniffs\CodeAnalysis

Code

protected function processVariableAsStaticOutsideClass(File $phpcsFile, $stackPtr, $varName) {
    // Are we refering to self:: outside a class?
    $tokens = $phpcsFile->getTokens();
    
    /** @var array{conditions?: (int|string)[], content?: string}|null */
    $token = $tokens[$stackPtr];
    $doubleColonPtr = $phpcsFile->findPrevious(Tokens::$emptyTokens, $stackPtr - 1, null, true);
    if ($doubleColonPtr === false || $tokens[$doubleColonPtr]['code'] !== T_DOUBLE_COLON) {
        return false;
    }
    $classNamePtr = $phpcsFile->findPrevious(Tokens::$emptyTokens, $doubleColonPtr - 1, null, true);
    if ($classNamePtr === false) {
        return false;
    }
    $code = $tokens[$classNamePtr]['code'];
    $staticReferences = [
        T_SELF,
        T_STATIC,
    ];
    if (!in_array($code, $staticReferences, true)) {
        return false;
    }
    $errorClass = $code === T_SELF ? 'SelfOutsideClass' : 'StaticOutsideClass';
    $staticRefType = $code === T_SELF ? 'self::' : 'static::';
    if (!empty($token['conditions']) && !empty($token['content']) && Helpers::areAnyConditionsAClass($token)) {
        return false;
    }
    $phpcsFile->addError("Use of {$staticRefType}%s outside class definition.", $stackPtr, $errorClass, [
        "\${$varName}",
    ]);
    return true;
}
RSS feed
Powered by Drupal