SlevomatCodingStandard\Helpers\UseStatementHelper::getUseStatements PHP Method

getUseStatements() public static method

public static getUseStatements ( PHP_CodeSniffer_File $phpcsFile, integer $openTagPointer ) : UseStatement[]
$phpcsFile PHP_CodeSniffer_File
$openTagPointer integer
return UseStatement[] canonicalName(string) => useStatement(\SlevomatCodingStandard\Helpers\UseStatement)
    public static function getUseStatements(PHP_CodeSniffer_File $phpcsFile, $openTagPointer)
    {
        $names = [];
        $tokens = $phpcsFile->getTokens();
        foreach (self::getUseStatementPointers($phpcsFile, $openTagPointer) as $usePointer) {
            $nextTokenFromUsePointer = TokenHelper::findNextEffective($phpcsFile, $usePointer + 1);
            $type = UseStatement::TYPE_DEFAULT;
            if ($tokens[$nextTokenFromUsePointer]['code'] === T_STRING) {
                if ($tokens[$nextTokenFromUsePointer]['content'] === 'const') {
                    $type = UseStatement::TYPE_CONSTANT;
                } elseif ($tokens[$nextTokenFromUsePointer]['content'] === 'function') {
                    $type = UseStatement::TYPE_FUNCTION;
                }
            }
            $name = self::getNameAsReferencedInClassFromUse($phpcsFile, $usePointer);
            $useStatement = new UseStatement($name, self::getFullyQualifiedTypeNameFromUse($phpcsFile, $usePointer), $usePointer, $type);
            $names[$useStatement->getCanonicalNameAsReferencedInFile()] = $useStatement;
        }
        return $names;
    }

Usage Example

 /**
  * @param \PHP_CodeSniffer_File $phpcsFile
  * @param integer $openTagPointer
  */
 public function process(PHP_CodeSniffer_File $phpcsFile, $openTagPointer)
 {
     $unusedNames = UseStatementHelper::getUseStatements($phpcsFile, $openTagPointer);
     $referencedNames = ReferencedNameHelper::getAllReferencedNames($phpcsFile, $openTagPointer, $this->searchAnnotations);
     foreach ($referencedNames as $referencedName) {
         $name = $referencedName->getNameAsReferencedInFile();
         $pointer = $referencedName->getPointer();
         $nameParts = NamespaceHelper::getNameParts($name);
         $nameAsReferencedInFile = $nameParts[0];
         $normalizedNameAsReferencedInFile = UseStatement::normalizedNameAsReferencedInFile($nameAsReferencedInFile);
         if (!NamespaceHelper::isFullyQualifiedName($name) && isset($unusedNames[$normalizedNameAsReferencedInFile])) {
             if ($unusedNames[$normalizedNameAsReferencedInFile]->getNameAsReferencedInFile() !== $nameAsReferencedInFile) {
                 $phpcsFile->addError(sprintf('Case of reference name %s and use statement %s do not match', $nameAsReferencedInFile, $unusedNames[$normalizedNameAsReferencedInFile]->getNameAsReferencedInFile()), $pointer, self::CODE_MISMATCHING_CASE);
             }
             unset($unusedNames[$normalizedNameAsReferencedInFile]);
         }
     }
     foreach ($unusedNames as $value) {
         $fullName = $value->getFullyQualifiedTypeName();
         if ($value->getNameAsReferencedInFile() !== $fullName) {
             if ($value->getNameAsReferencedInFile() !== NamespaceHelper::getUnqualifiedNameFromFullyQualifiedName($fullName)) {
                 $fullName .= sprintf(' (as %s)', $value->getNameAsReferencedInFile());
             }
         }
         $fix = $phpcsFile->addFixableError(sprintf('Type %s is not used in this file', $fullName), $value->getPointer(), self::CODE_UNUSED_USE);
         if ($fix) {
             $phpcsFile->fixer->beginChangeset();
             $endPointer = $phpcsFile->findNext(T_SEMICOLON, $value->getPointer()) + 1;
             for ($i = $value->getPointer(); $i <= $endPointer; $i++) {
                 $phpcsFile->fixer->replaceToken($i, '');
             }
             $phpcsFile->fixer->endChangeset();
         }
     }
 }
All Usage Examples Of SlevomatCodingStandard\Helpers\UseStatementHelper::getUseStatements