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

Breadcrumb

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

function ValidClassNameSniff::process

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

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

Parameters

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

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/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php, line 45

Class

ValidClassNameSniff

Namespace

PHP_CodeSniffer\Standards\PEAR\Sniffs\NamingConventions

Code

public function process(File $phpcsFile, $stackPtr) {
    $tokens = $phpcsFile->getTokens();
    $className = $phpcsFile->findNext(T_STRING, $stackPtr);
    $name = trim($tokens[$className]['content']);
    $errorData = [
        ucfirst($tokens[$stackPtr]['content']),
    ];
    // Make sure the first letter is a capital.
    if (preg_match('|^[A-Z]|', $name) === 0) {
        $error = '%s name must begin with a capital letter';
        $phpcsFile->addError($error, $stackPtr, 'StartWithCapital', $errorData);
    }
    // Check that each new word starts with a capital as well, but don't
    // check the first word, as it is checked above.
    $validName = true;
    $nameBits = explode('_', $name);
    $firstBit = array_shift($nameBits);
    foreach ($nameBits as $bit) {
        if ($bit === '' || $bit[0] !== strtoupper($bit[0])) {
            $validName = false;
            break;
        }
    }
    if ($validName === false) {
        // Strip underscores because they cause the suggested name
        // to be incorrect.
        $nameBits = explode('_', trim($name, '_'));
        $firstBit = array_shift($nameBits);
        if ($firstBit === '') {
            $error = '%s name is not valid';
            $phpcsFile->addError($error, $stackPtr, 'Invalid', $errorData);
        }
        else {
            $newName = strtoupper($firstBit[0]) . substr($firstBit, 1) . '_';
            foreach ($nameBits as $bit) {
                if ($bit !== '') {
                    $newName .= strtoupper($bit[0]) . substr($bit, 1) . '_';
                }
            }
            $newName = rtrim($newName, '_');
            $error = '%s name is not valid; consider %s instead';
            $data = $errorData;
            $data[] = $newName;
            $phpcsFile->addError($error, $stackPtr, 'Invalid', $data);
        }
    }
    
    //end if
}
RSS feed
Powered by Drupal