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

Breadcrumb

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

class ClassConstantVisibilitySniff

Hierarchy

  • class \SlevomatCodingStandard\Sniffs\Classes\ClassConstantVisibilitySniff implements \PHP_CodeSniffer\Sniffs\Sniff

Expanded class hierarchy of ClassConstantVisibilitySniff

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Classes/ClassConstantVisibilitySniff.php, line 21

Namespace

SlevomatCodingStandard\Sniffs\Classes
View source
class ClassConstantVisibilitySniff implements Sniff {
    public const CODE_MISSING_CONSTANT_VISIBILITY = 'MissingConstantVisibility';
    
    /** @var bool */
    public $fixable = false;
    
    /**
     * @return array<int, (int|string)>
     */
    public function register() : array {
        return [
            T_CONST,
        ];
    }
    
    /**
     * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
     * @param int $constantPointer
     */
    public function process(File $phpcsFile, $constantPointer) : void {
        $tokens = $phpcsFile->getTokens();
        if (count($tokens[$constantPointer]['conditions']) === 0) {
            return;
        }
        
        /** @var int $classPointer */
        $classPointer = array_keys($tokens[$constantPointer]['conditions'])[count($tokens[$constantPointer]['conditions']) - 1];
        if (!in_array($tokens[$classPointer]['code'], Tokens::$ooScopeTokens, true)) {
            return;
        }
        $visibilityPointer = TokenHelper::findPreviousEffective($phpcsFile, $constantPointer - 1);
        if ($tokens[$visibilityPointer]['code'] === T_FINAL) {
            $visibilityPointer = TokenHelper::findPreviousEffective($phpcsFile, $visibilityPointer - 1);
        }
        if (in_array($tokens[$visibilityPointer]['code'], [
            T_PUBLIC,
            T_PROTECTED,
            T_PRIVATE,
        ], true)) {
            return;
        }
        $equalSignPointer = TokenHelper::findNext($phpcsFile, T_EQUAL, $constantPointer + 1);
        $namePointer = TokenHelper::findPreviousEffective($phpcsFile, $equalSignPointer - 1);
        $message = sprintf('Constant %s::%s visibility missing.', ClassHelper::getFullyQualifiedName($phpcsFile, $classPointer), $tokens[$namePointer]['content']);
        if ($this->fixable) {
            $fix = $phpcsFile->addFixableError($message, $constantPointer, self::CODE_MISSING_CONSTANT_VISIBILITY);
            if ($fix) {
                $phpcsFile->fixer
                    ->beginChangeset();
                $phpcsFile->fixer
                    ->addContentBefore($constantPointer, 'public ');
                $phpcsFile->fixer
                    ->endChangeset();
            }
        }
        else {
            $phpcsFile->addError($message, $constantPointer, self::CODE_MISSING_CONSTANT_VISIBILITY);
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
ClassConstantVisibilitySniff::$fixable public property @var bool
ClassConstantVisibilitySniff::CODE_MISSING_CONSTANT_VISIBILITY public constant
ClassConstantVisibilitySniff::process public function * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
*
Overrides Sniff::process
ClassConstantVisibilitySniff::register public function * Overrides Sniff::register

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal