[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/vendor/symfony/polyfill-php80/ -> PhpToken.php (source)

   1  <?php
   2  
   3  /*
   4   * This file is part of the Symfony package.
   5   *
   6   * (c) Fabien Potencier <fabien@symfony.com>
   7   *
   8   * For the full copyright and license information, please view the LICENSE
   9   * file that was distributed with this source code.
  10   */
  11  
  12  namespace Symfony\Polyfill\Php80;
  13  
  14  /**
  15   * @author Fedonyuk Anton <info@ensostudio.ru>
  16   *
  17   * @internal
  18   */
  19  class PhpToken implements \Stringable
  20  {
  21      /**
  22       * @var int
  23       */
  24      public $id;
  25  
  26      /**
  27       * @var string
  28       */
  29      public $text;
  30  
  31      /**
  32       * @var int
  33       */
  34      public $line;
  35  
  36      /**
  37       * @var int
  38       */
  39      public $pos;
  40  
  41      public function __construct(int $id, string $text, int $line = -1, int $position = -1)
  42      {
  43          $this->id = $id;
  44          $this->text = $text;
  45          $this->line = $line;
  46          $this->pos = $position;
  47      }
  48  
  49      public function getTokenName(): ?string
  50      {
  51          if ('UNKNOWN' === $name = token_name($this->id)) {
  52              $name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text;
  53          }
  54  
  55          return $name;
  56      }
  57  
  58      /**
  59       * @param int|string|array $kind
  60       */
  61      public function is($kind): bool
  62      {
  63          foreach ((array) $kind as $value) {
  64              if (\in_array($value, [$this->id, $this->text], true)) {
  65                  return true;
  66              }
  67          }
  68  
  69          return false;
  70      }
  71  
  72      public function isIgnorable(): bool
  73      {
  74          return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true);
  75      }
  76  
  77      public function __toString(): string
  78      {
  79          return (string) $this->text;
  80      }
  81  
  82      /**
  83       * @return static[]
  84       */
  85      public static function tokenize(string $code, int $flags = 0): array
  86      {
  87          $line = 1;
  88          $position = 0;
  89          $tokens = token_get_all($code, $flags);
  90          foreach ($tokens as $index => $token) {
  91              if (\is_string($token)) {
  92                  $id = \ord($token);
  93                  $text = $token;
  94              } else {
  95                  [$id, $text, $line] = $token;
  96              }
  97              $tokens[$index] = new static($id, $text, $line, $position);
  98              $position += \strlen($text);
  99          }
 100  
 101          return $tokens;
 102      }
 103  }