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

Breadcrumb

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

function ObjectOperatorSpacingSniff::process

Same name in this branch
  1. 11.1.x vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/WhiteSpace/ObjectOperatorSpacingSniff.php \PHP_CodeSniffer\Standards\Squiz\Sniffs\WhiteSpace\ObjectOperatorSpacingSniff::process()

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

Parameters

\PHP_CodeSniffer\Files\File $phpcsFile The file being scanned.:

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

Return value

void

Overrides Sniff::process

File

vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/WhiteSpace/ObjectOperatorSpacingSniff.php, line 52

Class

ObjectOperatorSpacingSniff
Ensure that there are no white spaces before and after the object operator.

Namespace

Drupal\Sniffs\WhiteSpace

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    if ($tokens[$stackPtr - 1]['code'] !== T_WHITESPACE) {
        $before = 0;
    }
    else {
        if ($tokens[$stackPtr - 2]['line'] !== $tokens[$stackPtr]['line']) {
            $before = 'newline';
        }
        else {
            $before = $tokens[$stackPtr - 1]['length'];
        }
    }
    if ($tokens[$stackPtr + 1]['code'] !== T_WHITESPACE) {
        $after = 0;
    }
    else {
        if ($tokens[$stackPtr + 2]['line'] !== $tokens[$stackPtr]['line']) {
            $after = 'newline';
        }
        else {
            $after = $tokens[$stackPtr + 1]['length'];
        }
    }
    $phpcsFile->recordMetric($stackPtr, 'Spacing before object operator', $before);
    $phpcsFile->recordMetric($stackPtr, 'Spacing after object operator', $after);
    $prevToken = $phpcsFile->findPrevious(Tokens::$emptyTokens, $stackPtr - 1, null, true);
    // Line breaks are allowed before an object operator.
    if ($before !== 0 && $tokens[$stackPtr]['line'] === $tokens[$prevToken]['line']) {
        $error = 'Space found before object operator';
        $fix = $phpcsFile->addFixableError($error, $stackPtr, 'Before');
        if ($fix === true) {
            $phpcsFile->fixer
                ->replaceToken($stackPtr - 1, '');
        }
    }
    if ($after !== 0) {
        $error = 'Space found after object operator';
        $fix = $phpcsFile->addFixableError($error, $stackPtr, 'After');
        if ($fix === true) {
            if ($after === 'newline') {
                // Delete the operator on this line and insert it before the
                // token on the next line.
                $phpcsFile->fixer
                    ->beginChangeset();
                $phpcsFile->fixer
                    ->replaceToken($stackPtr, '');
                $phpcsFile->fixer
                    ->addContentBefore($stackPtr + 2, '->');
                $phpcsFile->fixer
                    ->endChangeset();
            }
            else {
                $phpcsFile->fixer
                    ->replaceToken($stackPtr + 1, '');
            }
        }
    }
}
RSS feed
Powered by Drupal