/** * Convert php code to array of tokens * * @param string $code * @return Token[] * @throws Exception */ public static function getTokensFromString($code) { $tokens = token_get_all($code); foreach ($tokens as $index => $tokenData) { if (!is_array($tokenData)) { $previousIndex = $index - 1; /** @var Token $previousToken */ $previousToken = $tokens[$previousIndex]; $line = $previousToken->getLine() + substr_count($previousToken->getValue(), "\n"); $tokenData = [Token::INVALID_TYPE, $tokenData, $line]; } $token = new Token($tokenData); $token->setIndex($index); $tokens[$index] = $token; } return $tokens; }