function ReferencedNameHelper::isReferencedName
2 calls to ReferencedNameHelper::isReferencedName()
- ReferencedNameHelper::createAllReferencedNames in vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Helpers/ ReferencedNameHelper.php - *
- ReferencedNameHelper::createAllReferencedNamesInAttributes in vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Helpers/ ReferencedNameHelper.php - *
File
-
vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Helpers/ ReferencedNameHelper.php, line 306
Class
- ReferencedNameHelper
- @internal
Namespace
SlevomatCodingStandard\HelpersCode
private static function isReferencedName(File $phpcsFile, int $startPointer) : bool {
$tokens = $phpcsFile->getTokens();
$nextPointer = TokenHelper::findNextEffective($phpcsFile, $startPointer + 1);
$previousPointer = TokenHelper::findPreviousEffective($phpcsFile, $startPointer - 1);
if ($nextPointer !== null && $tokens[$nextPointer]['code'] === T_DOUBLE_COLON) {
return !in_array($tokens[$previousPointer]['code'], [
T_OBJECT_OPERATOR,
T_NULLSAFE_OBJECT_OPERATOR,
], true);
}
if (count($tokens[$startPointer]['conditions']) > 0 && array_values(array_reverse($tokens[$startPointer]['conditions']))[0] === T_USE) {
// Method imported from trait
return false;
}
$previousToken = $tokens[$previousPointer];
$skipTokenCodes = [
T_FUNCTION,
T_AS,
T_DOUBLE_COLON,
T_OBJECT_OPERATOR,
T_NULLSAFE_OBJECT_OPERATOR,
T_NAMESPACE,
T_CONST,
T_ENUM_CASE,
];
if ($previousToken['code'] === T_USE) {
$classPointer = TokenHelper::findPrevious($phpcsFile, [
T_CLASS,
T_TRAIT,
T_ANON_CLASS,
T_ENUM,
], $startPointer - 1);
if ($classPointer !== null) {
$classToken = $tokens[$classPointer];
return $startPointer > $classToken['scope_opener'] && $startPointer < $classToken['scope_closer'];
}
return false;
}
if ($previousToken['code'] === T_OPEN_PARENTHESIS && isset($previousToken['parenthesis_owner']) && $tokens[$previousToken['parenthesis_owner']]['code'] === T_DECLARE) {
return false;
}
if ($previousToken['code'] === T_COMMA && TokenHelper::findPreviousLocal($phpcsFile, T_DECLARE, $previousPointer - 1) !== null) {
return false;
}
if ($previousToken['code'] === T_COMMA) {
$constPointer = TokenHelper::findPreviousLocal($phpcsFile, T_CONST, $previousPointer - 1);
if ($constPointer !== null && TokenHelper::findNext($phpcsFile, [
T_OPEN_SHORT_ARRAY,
T_ARRAY,
], $constPointer + 1, $startPointer) === null) {
return false;
}
}
elseif ($previousToken['code'] === T_BITWISE_AND) {
$pointerBefore = TokenHelper::findPreviousEffective($phpcsFile, $previousPointer - 1);
$isFunctionPointerBefore = TokenHelper::findPreviousLocal($phpcsFile, T_FUNCTION, $previousPointer - 1) !== null;
if ($tokens[$pointerBefore]['code'] !== T_VARIABLE && $isFunctionPointerBefore) {
return false;
}
}
elseif ($previousToken['code'] === T_GOTO) {
return false;
}
$isProbablyReferencedName = !in_array($previousToken['code'], array_merge($skipTokenCodes, TokenHelper::$typeKeywordTokenCodes), true);
if (!$isProbablyReferencedName) {
return false;
}
$endPointer = self::getReferencedNameEndPointer($phpcsFile, $startPointer);
$referencedName = self::getReferenceName($phpcsFile, $startPointer, $endPointer);
if (TypeHintHelper::isSimpleTypeHint($referencedName) || $referencedName === 'object') {
return $tokens[$nextPointer]['code'] === T_OPEN_PARENTHESIS;
}
return true;
}