%PDF- %PDF-
Direktori : /home/ugotscom/3vfm3/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ |
Current File : /home/ugotscom/3vfm3/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php |
<?php declare(strict_types=1); namespace PhpParser\Lexer\TokenEmulator; use PhpParser\Lexer\Emulative; final class FnTokenEmulator implements TokenEmulatorInterface { public function isEmulationNeeded(string $code) : bool { // skip version where this is supported if (version_compare(\PHP_VERSION, Emulative::PHP_7_4, '>=')) { return false; } return strpos($code, 'fn') !== false; } public function emulate(string $code, array $tokens): array { foreach ($tokens as $i => $token) { if ($token[0] === T_STRING && strtolower($token[1]) === 'fn') { $previousNonSpaceToken = $this->getPreviousNonSpaceToken($tokens, $i); if ($previousNonSpaceToken !== null && $previousNonSpaceToken[0] === T_OBJECT_OPERATOR) { continue; } $tokens[$i][0] = Emulative::T_FN; } } return $tokens; } /** * @param mixed[] $tokens * @return mixed[]|null */ private function getPreviousNonSpaceToken(array $tokens, int $start) { for ($i = $start - 1; $i >= 0; --$i) { if ($tokens[$i][0] === T_WHITESPACE) { continue; } return $tokens[$i]; } return null; } }