8 use PHP_CodeSniffer\Sniffs\Sniff;
9 use PHP_CodeSniffer\Files\File;
14 class LiteralNamespacesSniff
implements Sniff
19 private $literalNamespacePattern =
'/^[\\\]{0,2}[A-Z][A-Za-z]+([\\\]{1,2}[A-Z][A-Za-z]+){2,}(?!\\\+)$/';
24 private $classNames = [];
29 public function register()
32 T_CONSTANT_ENCAPSED_STRING,
33 T_DOUBLE_QUOTED_STRING,
40 public function process(File $sourceFile, $stackPtr)
42 $tokens = $sourceFile->getTokens();
43 if ($sourceFile->findPrevious(T_STRING_CONCAT, $stackPtr, $stackPtr - 3) ||
44 $sourceFile->findNext(T_STRING_CONCAT, $stackPtr, $stackPtr + 3)
51 if (strpos(
$content,
'\\') !==
false) {
55 if (preg_match($this->literalNamespacePattern,
$content) === 1 && $this->classExists(
$content)) {
56 $sourceFile->addError(
57 "Use ::class notation instead.",
process(File $sourceFile, $stackPtr)