*/ public function register(): array { return [ T_USE, ]; } /** * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint * @param int $usePointer */ public function process(File $phpcsFile, $usePointer): void { if (!UseStatementHelper::isImportUse($phpcsFile, $usePointer)) { return; } $namespaceName = NamespaceHelper::findCurrentNamespaceName($phpcsFile, $usePointer); $namespaceName ??= ''; $usedTypeName = UseStatementHelper::getFullyQualifiedTypeNameFromUse($phpcsFile, $usePointer); if (!StringHelper::startsWith($usedTypeName, $namespaceName)) { return; } $asPointer = $this->findAsPointer($phpcsFile, $usePointer); if ($asPointer !== null) { return; } $usedTypeNameRest = substr($usedTypeName, strlen($namespaceName)); if (!NamespaceHelper::isFullyQualifiedName($usedTypeNameRest) && $namespaceName !== '') { return; } if (NamespaceHelper::hasNamespace($usedTypeNameRest)) { return; } $fix = $phpcsFile->addFixableError(sprintf( 'Use %s is from the same namespace – that is prohibited.', $usedTypeName, ), $usePointer, self::CODE_USE_FROM_SAME_NAMESPACE); if (!$fix) { return; } $endPointer = TokenHelper::findNext($phpcsFile, T_SEMICOLON, $usePointer) + 1; $phpcsFile->fixer->beginChangeset(); FixerHelper::removeBetweenIncluding($phpcsFile, $usePointer, $endPointer); $phpcsFile->fixer->endChangeset(); } private function findAsPointer(File $phpcsFile, int $startPointer): ?int { return TokenHelper::findNextLocal($phpcsFile, T_AS, $startPointer); } }