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
Namespace
VariableAnalysis\Sniffs\CodeAnalysisCode
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;
}