?????????? ????????? - ??????????????? - /opt/cpanel/ea-wappspector/vendor/slevomat/coding-standard/SlevomatCodingStandard/Helpers/TernaryOperatorHelper.php
???????
<?php declare(strict_types = 1); namespace SlevomatCodingStandard\Helpers; use PHP_CodeSniffer\Files\File; use function count; use function in_array; use const T_CASE; use const T_CLOSE_PARENTHESIS; use const T_CLOSE_SHORT_ARRAY; use const T_CLOSE_SQUARE_BRACKET; use const T_COALESCE; use const T_COLON; use const T_COMMA; use const T_DOUBLE_ARROW; use const T_EQUAL; use const T_INLINE_ELSE; use const T_INLINE_THEN; use const T_OPEN_PARENTHESIS; use const T_OPEN_SHORT_ARRAY; use const T_OPEN_SQUARE_BRACKET; use const T_OPEN_TAG; use const T_OPEN_TAG_WITH_ECHO; use const T_RETURN; use const T_SEMICOLON; use const T_THROW; /** * @internal */ class TernaryOperatorHelper { public static function isConditionOfTernaryOperator(File $phpcsFile, int $pointer): bool { $inlineThenPointer = TokenHelper::findNext($phpcsFile, T_INLINE_THEN, $pointer + 1); if ($inlineThenPointer === null) { return false; } $startPointer = self::getStartPointer($phpcsFile, $inlineThenPointer); return $startPointer <= $pointer; } public static function getElsePointer(File $phpcsFile, int $inlineThenPointer): int { $tokens = $phpcsFile->getTokens(); $pointer = $inlineThenPointer; do { $pointer = TokenHelper::findNext( $phpcsFile, [T_INLINE_ELSE, T_OPEN_PARENTHESIS, T_OPEN_SHORT_ARRAY, T_OPEN_SQUARE_BRACKET], $pointer + 1, ); if ($tokens[$pointer]['code'] === T_OPEN_PARENTHESIS) { $pointer = $tokens[$pointer]['parenthesis_closer']; continue; } if (in_array($tokens[$pointer]['code'], [T_OPEN_SHORT_ARRAY, T_OPEN_SQUARE_BRACKET], true)) { $pointer = $tokens[$pointer]['bracket_closer']; continue; } if (ScopeHelper::isInSameScope($phpcsFile, $inlineThenPointer, $pointer)) { break; } } while ($pointer !== null); return $pointer; } public static function getStartPointer(File $phpcsFile, int $inlineThenPointer): int { $tokens = $phpcsFile->getTokens(); $pointerBeforeCondition = $inlineThenPointer; do { $pointerBeforeCondition = TokenHelper::findPrevious( $phpcsFile, [T_EQUAL, T_DOUBLE_ARROW, T_COMMA, T_RETURN, T_THROW, T_CASE, T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, T_OPEN_SQUARE_BRACKET, T_OPEN_SHORT_ARRAY, T_OPEN_PARENTHESIS], $pointerBeforeCondition - 1, ); if ( in_array($tokens[$pointerBeforeCondition]['code'], [T_OPEN_SQUARE_BRACKET, T_OPEN_SHORT_ARRAY], true) && $tokens[$pointerBeforeCondition]['bracket_closer'] < $inlineThenPointer ) { continue; } if ( $tokens[$pointerBeforeCondition]['code'] === T_OPEN_PARENTHESIS && $tokens[$pointerBeforeCondition]['parenthesis_closer'] < $inlineThenPointer ) { continue; } break; } while (true); return TokenHelper::findNextEffective($phpcsFile, $pointerBeforeCondition + 1); } public static function getEndPointer(File $phpcsFile, int $inlineThenPointer, int $inlineElsePointer): int { $tokens = $phpcsFile->getTokens(); $pointerAfterInlineElseEnd = $inlineElsePointer; do { $pointerAfterInlineElseEnd = TokenHelper::findNext( $phpcsFile, [T_SEMICOLON, T_COLON, T_COMMA, T_DOUBLE_ARROW, T_CLOSE_PARENTHESIS, T_CLOSE_SHORT_ARRAY, T_CLOSE_SQUARE_BRACKET, T_COALESCE], $pointerAfterInlineElseEnd + 1, ); if ($pointerAfterInlineElseEnd === null) { continue; } if ($tokens[$pointerAfterInlineElseEnd]['code'] === T_CLOSE_PARENTHESIS) { if ($tokens[$pointerAfterInlineElseEnd]['parenthesis_opener'] < $inlineThenPointer) { break; } } elseif (in_array($tokens[$pointerAfterInlineElseEnd]['code'], [T_CLOSE_SHORT_ARRAY, T_CLOSE_SQUARE_BRACKET], true)) { if ($tokens[$pointerAfterInlineElseEnd]['bracket_opener'] < $inlineThenPointer) { break; } } elseif ($tokens[$pointerAfterInlineElseEnd]['code'] === T_COMMA) { $previousPointer = TokenHelper::findPrevious( $phpcsFile, [T_OPEN_PARENTHESIS, T_OPEN_SHORT_ARRAY], $pointerAfterInlineElseEnd - 1, $inlineThenPointer, ); if ($previousPointer === null) { break; } if ( $tokens[$previousPointer]['code'] === T_OPEN_PARENTHESIS && $tokens[$previousPointer]['parenthesis_closer'] < $pointerAfterInlineElseEnd ) { break; } if ( $tokens[$previousPointer]['code'] === T_OPEN_SHORT_ARRAY && $tokens[$previousPointer]['bracket_closer'] < $pointerAfterInlineElseEnd ) { break; } } elseif ($tokens[$pointerAfterInlineElseEnd]['code'] === T_DOUBLE_ARROW) { $previousPointer = TokenHelper::findPrevious( $phpcsFile, T_OPEN_SHORT_ARRAY, $pointerAfterInlineElseEnd - 1, $inlineThenPointer, ); if ($previousPointer === null) { break; } } elseif (ScopeHelper::isInSameScope($phpcsFile, $inlineElsePointer, $pointerAfterInlineElseEnd)) { break; } } while ($pointerAfterInlineElseEnd !== null); if ($pointerAfterInlineElseEnd !== null) { return TokenHelper::findPreviousEffective($phpcsFile, $pointerAfterInlineElseEnd - 1); } return TokenHelper::findPreviousEffective($phpcsFile, count($tokens) - 1); } }
| ver. 1.6 |
Github
|
.
| PHP 8.2.30 | ??????????? ?????????: 0 |
proxy
|
phpinfo
|
???????????