function ReferencedNameHelper::createAllReferencedNamesInAttributes
*
Return value
list<ReferencedName>
1 call to ReferencedNameHelper::createAllReferencedNamesInAttributes()
- ReferencedNameHelper::getAllReferencedNamesInAttributes in vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Helpers/ ReferencedNameHelper.php - *
File
-
vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Helpers/ ReferencedNameHelper.php, line 405
Class
- ReferencedNameHelper
- @internal
Namespace
SlevomatCodingStandard\HelpersCode
private static function createAllReferencedNamesInAttributes(File $phpcsFile, int $openTagPointer) : array {
$referencedNames = [];
$tokens = $phpcsFile->getTokens();
$attributePointers = TokenHelper::findNextAll($phpcsFile, T_ATTRIBUTE, $openTagPointer + 1);
foreach ($attributePointers as $attributeStartPointer) {
$searchStartPointer = $attributeStartPointer + 1;
$searchEndPointer = $tokens[$attributeStartPointer]['attribute_closer'];
$searchPointer = $searchStartPointer;
$searchTokens = array_merge(TokenHelper::getNameTokenCodes(), [
T_OPEN_PARENTHESIS,
T_CLOSE_PARENTHESIS,
]);
$level = 0;
do {
$pointer = TokenHelper::findNext($phpcsFile, $searchTokens, $searchPointer, $searchEndPointer);
if ($pointer === null) {
break;
}
if ($tokens[$pointer]['code'] === T_OPEN_PARENTHESIS) {
$level++;
$searchPointer = $pointer + 1;
continue;
}
if ($tokens[$pointer]['code'] === T_CLOSE_PARENTHESIS) {
$level--;
$searchPointer = $pointer + 1;
continue;
}
$referencedNameEndPointer = self::getReferencedNameEndPointer($phpcsFile, $pointer);
$pointerBefore = TokenHelper::findPreviousEffective($phpcsFile, $pointer - 1);
if (in_array($tokens[$pointerBefore]['code'], [
T_OPEN_TAG,
T_ATTRIBUTE,
], true)) {
$referenceType = ReferencedName::TYPE_CLASS;
}
elseif ($tokens[$pointerBefore]['code'] === T_COMMA && $level === 0) {
$referenceType = ReferencedName::TYPE_CLASS;
}
elseif (self::isReferencedName($phpcsFile, $pointer)) {
$referenceType = self::getReferenceType($phpcsFile, $pointer, $referencedNameEndPointer);
}
else {
$searchPointer = $pointer + 1;
continue;
}
$referencedName = self::getReferenceName($phpcsFile, $pointer, $referencedNameEndPointer);
$referencedNames[] = new ReferencedName($referencedName, $attributeStartPointer, $tokens[$attributeStartPointer]['attribute_closer'], $referenceType);
$searchPointer = $referencedNameEndPointer + 1;
} while (true);
}
return $referencedNames;
}