class NamespaceDeclarationSniff
Same name in this branch
- 11.1.x vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Sniffs/Namespaces/NamespaceDeclarationSniff.php \PHP_CodeSniffer\Standards\PSR2\Sniffs\Namespaces\NamespaceDeclarationSniff
Hierarchy
- class \SlevomatCodingStandard\Sniffs\Namespaces\NamespaceDeclarationSniff implements \PHP_CodeSniffer\Sniffs\Sniff
Expanded class hierarchy of NamespaceDeclarationSniff
File
-
vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ Namespaces/ NamespaceDeclarationSniff.php, line 17
Namespace
SlevomatCodingStandard\Sniffs\NamespacesView source
class NamespaceDeclarationSniff implements Sniff {
public const CODE_INVALID_WHITESPACE_AFTER_NAMESPACE = 'InvalidWhitespaceAfterNamespace';
public const CODE_DISALLOWED_CONTENT_BETWEEN_NAMESPACE_NAME_AND_SEMICOLON = 'DisallowedContentBetweenNamespaceNameAndSemicolon';
public const CODE_DISALLOWED_BRACKETED_SYNTAX = 'DisallowedBracketedSyntax';
/**
* @return array<int, (int|string)>
*/
public function register() : array {
return [
T_NAMESPACE,
];
}
/**
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
* @param int $namespacePointer
*/
public function process(File $phpcsFile, $namespacePointer) : void {
$tokens = $phpcsFile->getTokens();
$pointerAfterNamespace = TokenHelper::findNextEffective($phpcsFile, $namespacePointer + 1);
if ($tokens[$pointerAfterNamespace]['code'] === T_NS_SEPARATOR) {
return;
}
$this->checkWhitespaceAfterNamespace($phpcsFile, $namespacePointer);
$this->checkDisallowedContentBetweenNamespaceNameAndSemicolon($phpcsFile, $namespacePointer);
$this->checkDisallowedBracketedSyntax($phpcsFile, $namespacePointer);
}
private function checkWhitespaceAfterNamespace(File $phpcsFile, int $namespacePointer) : void {
$tokens = $phpcsFile->getTokens();
$whitespacePointer = $namespacePointer + 1;
if ($tokens[$whitespacePointer]['code'] !== T_WHITESPACE) {
$phpcsFile->addError('Expected one space after namespace statement.', $namespacePointer, self::CODE_INVALID_WHITESPACE_AFTER_NAMESPACE);
return;
}
if ($tokens[$whitespacePointer]['content'] === ' ') {
return;
}
$errorMessage = $tokens[$whitespacePointer]['content'][0] === "\t" ? 'Expected one space after namespace statement, found tab.' : sprintf('Expected one space after namespace statement, found %d.', strlen($tokens[$whitespacePointer]['content']));
$fix = $phpcsFile->addFixableError($errorMessage, $namespacePointer, self::CODE_INVALID_WHITESPACE_AFTER_NAMESPACE);
if (!$fix) {
return;
}
$phpcsFile->fixer
->beginChangeset();
$phpcsFile->fixer
->replaceToken($whitespacePointer, ' ');
$phpcsFile->fixer
->endChangeset();
}
private function checkDisallowedContentBetweenNamespaceNameAndSemicolon(File $phpcsFile, int $namespacePointer) : void {
if (array_key_exists('scope_opener', $phpcsFile->getTokens()[$namespacePointer])) {
return;
}
$namespaceNameStartPointer = TokenHelper::findNextEffective($phpcsFile, $namespacePointer + 1);
$namespaceNameEndPointer = TokenHelper::findNextExcluding($phpcsFile, TokenHelper::getNameTokenCodes(), $namespaceNameStartPointer + 1) - 1;
/** @var int $namespaceSemicolonPointer */
$namespaceSemicolonPointer = TokenHelper::findNextLocal($phpcsFile, T_SEMICOLON, $namespaceNameEndPointer + 1);
if ($namespaceNameEndPointer + 1 === $namespaceSemicolonPointer) {
return;
}
$fix = $phpcsFile->addFixableError('Disallowed content between namespace name and semicolon.', $namespacePointer, self::CODE_DISALLOWED_CONTENT_BETWEEN_NAMESPACE_NAME_AND_SEMICOLON);
if (!$fix) {
return;
}
$phpcsFile->fixer
->beginChangeset();
FixerHelper::removeBetween($phpcsFile, $namespaceNameEndPointer, $namespaceSemicolonPointer);
$phpcsFile->fixer
->endChangeset();
}
private function checkDisallowedBracketedSyntax(File $phpcsFile, int $namespacePointer) : void {
$tokens = $phpcsFile->getTokens();
if (!array_key_exists('scope_opener', $tokens[$namespacePointer])) {
return;
}
$fix = $phpcsFile->addFixableError('Bracketed syntax for namespaces is disallowed.', $namespacePointer, self::CODE_DISALLOWED_BRACKETED_SYNTAX);
if (!$fix) {
return;
}
$phpcsFile->fixer
->beginChangeset();
$phpcsFile->fixer
->replaceToken($tokens[$namespacePointer]['scope_opener'], ';');
$phpcsFile->fixer
->replaceToken($tokens[$namespacePointer]['scope_closer'], '');
$phpcsFile->fixer
->endChangeset();
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
NamespaceDeclarationSniff::checkDisallowedBracketedSyntax | private | function | ||
NamespaceDeclarationSniff::checkDisallowedContentBetweenNamespaceNameAndSemicolon | private | function | ||
NamespaceDeclarationSniff::checkWhitespaceAfterNamespace | private | function | ||
NamespaceDeclarationSniff::CODE_DISALLOWED_BRACKETED_SYNTAX | public | constant | ||
NamespaceDeclarationSniff::CODE_DISALLOWED_CONTENT_BETWEEN_NAMESPACE_NAME_AND_SEMICOLON | public | constant | ||
NamespaceDeclarationSniff::CODE_INVALID_WHITESPACE_AFTER_NAMESPACE | public | constant | ||
NamespaceDeclarationSniff::process | public | function | * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint * |
Overrides Sniff::process |
NamespaceDeclarationSniff::register | public | function | * | Overrides Sniff::register |