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

Breadcrumb

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

function AbstractArraySniff::process

Processes this sniff, when one of its tokens is encountered.

Parameters

\PHP_CodeSniffer\Files\File $phpcsFile The current file being checked.:

int $stackPtr The position of the current token in: the stack passed in $tokens.

Return value

void

Overrides Sniff::process

File

vendor/squizlabs/php_codesniffer/src/Sniffs/AbstractArraySniff.php, line 43

Class

AbstractArraySniff

Namespace

PHP_CodeSniffer\Sniffs

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    if ($tokens[$stackPtr]['code'] === T_ARRAY) {
        $phpcsFile->recordMetric($stackPtr, 'Short array syntax used', 'no');
        $arrayStart = $tokens[$stackPtr]['parenthesis_opener'];
        if (isset($tokens[$arrayStart]['parenthesis_closer']) === false) {
            // Incomplete array.
            return;
        }
        $arrayEnd = $tokens[$arrayStart]['parenthesis_closer'];
    }
    else {
        $phpcsFile->recordMetric($stackPtr, 'Short array syntax used', 'yes');
        $arrayStart = $stackPtr;
        $arrayEnd = $tokens[$stackPtr]['bracket_closer'];
    }
    $lastContent = $phpcsFile->findPrevious(Tokens::$emptyTokens, $arrayEnd - 1, null, true);
    if ($tokens[$lastContent]['code'] === T_COMMA) {
        // Last array item ends with a comma.
        $phpcsFile->recordMetric($stackPtr, 'Array end comma', 'yes');
    }
    else {
        $phpcsFile->recordMetric($stackPtr, 'Array end comma', 'no');
    }
    $indices = [];
    $current = $arrayStart;
    while (($next = $phpcsFile->findNext(Tokens::$emptyTokens, $current + 1, $arrayEnd, true)) !== false) {
        $end = $this->getNext($phpcsFile, $next, $arrayEnd);
        if ($tokens[$end]['code'] === T_DOUBLE_ARROW) {
            $indexEnd = $phpcsFile->findPrevious(T_WHITESPACE, $end - 1, null, true);
            $valueStart = $phpcsFile->findNext(Tokens::$emptyTokens, $end + 1, null, true);
            $indices[] = [
                'index_start' => $next,
                'index_end' => $indexEnd,
                'arrow' => $end,
                'value_start' => $valueStart,
            ];
        }
        else {
            $valueStart = $next;
            $indices[] = [
                'value_start' => $valueStart,
            ];
        }
        $current = $this->getNext($phpcsFile, $valueStart, $arrayEnd);
    }
    if ($tokens[$arrayStart]['line'] === $tokens[$arrayEnd]['line']) {
        $this->processSingleLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd, $indices);
    }
    else {
        $this->processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $arrayEnd, $indices);
    }
}

API Navigation

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