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

Breadcrumb

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

function ClassDeclarationSniff::process

Same name in this branch
  1. 11.1.x vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Classes/ClassDeclarationSniff.php \Drupal\Sniffs\Classes\ClassDeclarationSniff::process()
  2. 11.1.x vendor/squizlabs/php_codesniffer/src/Standards/Squiz/Sniffs/Classes/ClassDeclarationSniff.php \PHP_CodeSniffer\Standards\Squiz\Sniffs\Classes\ClassDeclarationSniff::process()
  3. 11.1.x vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Classes/ClassDeclarationSniff.php \PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes\ClassDeclarationSniff::process()
  4. 11.1.x vendor/squizlabs/php_codesniffer/src/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php \PHP_CodeSniffer\Standards\PEAR\Sniffs\Classes\ClassDeclarationSniff::process()

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

Parameters

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

integer $stackPtr The position of the current token in: the token stack.

Return value

void

Overrides Sniff::process

File

vendor/squizlabs/php_codesniffer/src/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php, line 45

Class

ClassDeclarationSniff

Namespace

PHP_CodeSniffer\Standards\PSR1\Sniffs\Classes

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    if (isset($tokens[$stackPtr]['scope_closer']) === false) {
        return;
    }
    $errorData = [
        strtolower($tokens[$stackPtr]['content']),
    ];
    $nextClass = $phpcsFile->findNext([
        T_CLASS,
        T_INTERFACE,
        T_TRAIT,
        T_ENUM,
    ], $tokens[$stackPtr]['scope_closer'] + 1);
    if ($nextClass !== false) {
        $error = 'Each %s must be in a file by itself';
        $phpcsFile->addError($error, $nextClass, 'MultipleClasses', $errorData);
        $phpcsFile->recordMetric($stackPtr, 'One class per file', 'no');
    }
    else {
        $phpcsFile->recordMetric($stackPtr, 'One class per file', 'yes');
    }
    $namespace = $phpcsFile->findNext([
        T_NAMESPACE,
        T_CLASS,
        T_INTERFACE,
        T_TRAIT,
        T_ENUM,
    ], 0);
    if ($tokens[$namespace]['code'] !== T_NAMESPACE) {
        $error = 'Each %s must be in a namespace of at least one level (a top-level vendor name)';
        $phpcsFile->addError($error, $stackPtr, 'MissingNamespace', $errorData);
        $phpcsFile->recordMetric($stackPtr, 'Class defined in namespace', 'no');
    }
    else {
        $phpcsFile->recordMetric($stackPtr, 'Class defined in namespace', 'yes');
    }
}
RSS feed
Powered by Drupal