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
Namespace
PHP_CodeSniffer\SniffsCode
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);
}
}