/** * @param \PHP_CodeSniffer_File $phpcsFile * @param integer $usePointer * @return boolean */ public static function isAnonymousFunctionUse(PHP_CodeSniffer_File $phpcsFile, $usePointer) { $tokens = $phpcsFile->getTokens(); $nextPointer = TokenHelper::findNextNonWhitespace($phpcsFile, $usePointer + 1); $nextToken = $tokens[$nextPointer]; return $nextToken['code'] === T_OPEN_PARENTHESIS; }
/** * @param \PHP_CodeSniffer_File $phpcsFile * @param integer $anyPointer any pointer type where the search begins from (backwards) * @return string|null */ public static function findCurrentNamespaceName(PHP_CodeSniffer_File $phpcsFile, $anyPointer) { $namespacePointer = $phpcsFile->findPrevious(T_NAMESPACE, $anyPointer); if ($namespacePointer === false) { return null; } $namespaceNameStartPointer = TokenHelper::findNextNonWhitespace($phpcsFile, $namespacePointer + 1); $namespaceNameEndPointer = TokenHelper::findNextExcluding($phpcsFile, TokenHelper::$nameTokenCodes, $namespaceNameStartPointer + 1); return TokenHelper::getContent($phpcsFile, $namespaceNameStartPointer, $namespaceNameEndPointer); }
/** * @param \PHP_CodeSniffer_File $phpcsFile * @param integer $usePointer */ public function process(PHP_CodeSniffer_File $phpcsFile, $usePointer) { if (UseStatementHelper::isAnonymousFunctionUse($phpcsFile, $usePointer) || UseStatementHelper::isTraitUse($phpcsFile, $usePointer)) { return; } $tokens = $phpcsFile->getTokens(); $nextTokenPointer = TokenHelper::findNextNonWhitespace($phpcsFile, $usePointer + 1); $nextToken = $tokens[$nextTokenPointer]; if ($nextToken['code'] === T_NS_SEPARATOR) { $phpcsFile->addError('Use statement cannot start with a backslash', $nextTokenPointer, self::CODE_STARTS_WITH_BACKSLASH); } }
/** * @param PHP_CodeSniffer_File $phpcsFile * @param mixed[] $tokens * @param mixed[] $classToken * @return integer[] string(name) => pointer */ private function getMethods(PHP_CodeSniffer_File $phpcsFile, array $tokens, array $classToken) { $reportedMethods = []; $findMethodsStartTokenPointer = $classToken['scope_opener'] + 1; while (($methodTokenPointer = $phpcsFile->findNext(T_FUNCTION, $findMethodsStartTokenPointer, $classToken['scope_closer'])) !== false) { $visibilityModifier = $this->findVisibilityModifier($phpcsFile, $tokens, $methodTokenPointer); if ($visibilityModifier === null || $visibilityModifier !== T_PRIVATE) { $findMethodsStartTokenPointer = $methodTokenPointer + 1; continue; } $namePointer = TokenHelper::findNextNonWhitespace($phpcsFile, $methodTokenPointer + 1); if ($namePointer === null) { $findMethodsStartTokenPointer = $methodTokenPointer + 1; continue; } $methodName = $tokens[$namePointer]['content']; if ($methodName !== '__construct') { $reportedMethods[$methodName] = $methodTokenPointer; } $findMethodsStartTokenPointer = $methodTokenPointer + 1; } return $reportedMethods; }