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

Breadcrumb

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

function FileExtensionSniff::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

int

Overrides Sniff::process

File

vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php, line 40

Class

FileExtensionSniff

Namespace

PHP_CodeSniffer\Standards\Squiz\Sniffs\Files

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    $fileName = $phpcsFile->getFilename();
    $extension = substr($fileName, strrpos($fileName, '.'));
    $nextClass = $phpcsFile->findNext([
        T_CLASS,
        T_INTERFACE,
        T_TRAIT,
        T_ENUM,
    ], $stackPtr);
    if ($nextClass !== false) {
        $phpcsFile->recordMetric($stackPtr, 'File extension for class files', $extension);
        if ($extension === '.php') {
            $error = '%s found in ".php" file; use ".inc" extension instead';
            $data = [
                ucfirst($tokens[$nextClass]['content']),
            ];
            $phpcsFile->addError($error, $stackPtr, 'ClassFound', $data);
        }
    }
    else {
        $phpcsFile->recordMetric($stackPtr, 'File extension for non-class files', $extension);
        if ($extension === '.inc') {
            $error = 'No interface or class found in ".inc" file; use ".php" extension instead';
            $phpcsFile->addError($error, $stackPtr, 'NoClass');
        }
    }
    // Ignore the rest of the file.
    return $phpcsFile->numTokens;
}
RSS feed
Powered by Drupal