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

Breadcrumb

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

function VariableAnalysisSniff::isVariableUndefined

* Return true if a variable is defined within a scope. * *

Parameters

string $varName: * @param int $stackPtr * @param int $currScope * * @return bool

2 calls to VariableAnalysisSniff::isVariableUndefined()
VariableAnalysisSniff::markVariableReadAndWarnIfUndefined in vendor/sirbrillig/phpcs-variable-analysis/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php
* Record a variable use and report a warning if the variable is undefined. * *
VariableAnalysisSniff::processVariableAsUseImportDefinition in vendor/sirbrillig/phpcs-variable-analysis/VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php
* Process a variable definition if it is inside a function's "use" import. * *

File

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

Class

VariableAnalysisSniff

Namespace

VariableAnalysis\Sniffs\CodeAnalysis

Code

protected function isVariableUndefined($varName, $stackPtr, $currScope) {
    $varInfo = $this->getOrCreateVariableInfo($varName, $currScope);
    Helpers::debug('isVariableUndefined', $varInfo, 'at', $stackPtr);
    if ($varInfo->ignoreUndefined) {
        return false;
    }
    if (isset($varInfo->firstDeclared) && $varInfo->firstDeclared <= $stackPtr) {
        return false;
    }
    if (isset($varInfo->firstInitialized) && $varInfo->firstInitialized <= $stackPtr) {
        return false;
    }
    // If we are inside a for loop increment expression, check to see if the
    // variable was defined inside the for loop.
    foreach ($this->forLoops as $forLoop) {
        if ($stackPtr > $forLoop->incrementStart && $stackPtr < $forLoop->incrementEnd) {
            Helpers::debug('isVariableUndefined looking at increment expression for loop', $forLoop);
            if (isset($varInfo->firstInitialized) && $varInfo->firstInitialized > $forLoop->blockStart && $varInfo->firstInitialized < $forLoop->blockEnd) {
                return false;
            }
        }
    }
    // If we are inside a for loop body, check to see if the variable was
    // defined in that loop's third expression.
    foreach ($this->forLoops as $forLoop) {
        if ($stackPtr > $forLoop->blockStart && $stackPtr < $forLoop->blockEnd) {
            foreach ($forLoop->incrementVariables as $forLoopVarInfo) {
                if ($varInfo === $forLoopVarInfo) {
                    return false;
                }
            }
        }
    }
    return true;
}

API Navigation

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