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

Breadcrumb

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

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\Helpers

Code

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;
}

API Navigation

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