3v4l.org

run code in 300+ PHP versions simultaneously
<?php class URI implements \ArrayAccess, \Iterator, \Countable, \JsonSerializable { const SCHEME = 0x01; const USER = 0x02; const PASS = 0x04; const HOST = 0x08; const PORT = 0x10; const PATH = 0x20; const QUERY = 0x40; const FRAGMENT = 0x80; // The private props and magic methods are only implemented like this to give type validation, // these are effectively public properties private $scheme; private $user; private $pass; private $host; private $port; private $path; private $query; private $fragment; // obviously these two properties would be handled internally in a native impl private static $constPropMap = [ self::SCHEME => 'scheme', self::USER => 'user', self::PASS => 'pass', self::HOST => 'host', self::PORT => 'port', self::PATH => 'path', self::QUERY => 'query', self::FRAGMENT => 'fragment', ]; private $iteratorCounter = self::SCHEME; private function validateScheme() { // in the generic URI syntax, only the format of the scheme is rigid return (bool) preg_match('/^[a-z][a-z0-9+.\-]*$/i', $value); } public function __construct($uri) { $parts = []; if (((string) $uri) !== '' && false === $parts = parse_url($uri)) { throw new \InvalidArgumentException('Invalid URI'); } foreach ($parts as $name => $value) { $this->__set($name, urldecode($value)); } } public function __get($name) { if (!in_array($name, self::$constPropMap)) { trigger_error('Undefined property: ' . __CLASS__ . '::$' . $name, E_USER_NOTICE); return null; } return $this->$name; } public function __set($name, $value) { if ($value === null) { $this->$name = null; } else if ($name === 'port') { $this->port = (int) $value; } else if ($name === 'query') { parse_str($value, $this->query); } else if (in_array($name, self::$constPropMap)) { if ($name === 'scheme' && !$this->validateScheme($value)) { throw new \InvalidArgumentException('Invalid URI scheme'); } $this->$name = (string) $value; } else { // because PHP allows expando properties on anything afaik :-( $this->$name = $value; } } public function __toString() { $result = ''; if (isset($this->scheme)) { $result = $this->scheme . ':'; } if (isset($this->host)) { $result .= '//'; if (isset($this->user)) { $result .= urlencode($this->user); if (isset($this->pass)) { $result .= ':' . urlencode($this->pass); } $result .= '@'; } $result .= urlencode($this->host); if (isset($this->port)) { $result .= ':' . $this->port; } } if (isset($this->path)) { $result .= urlencode($this->path); } if (!empty($this->query)) { $result .= '?' . http_build_query($this->query); } if (isset($this->fragment)) { $result .= '#' . urlencode($this->fragment); } return $result; } /* ArrayAccess */ public function offsetExists($name) { return isset($this->$name) || isset(self::$constPropMap[$name]); } public function offsetGet($name) { if (isset(self::$constPropMap[$name])) { return $this->__get(self::$constPropMap[$name]); } else { return $this->__get($name); } } public function offsetSet($name, $value) { if (isset(self::$constPropMap[$name])) { $this->__set(self::$constPropMap[$name], $value); } else { $this->__set($name, $value); } } public function offsetUnset($name) { if (isset(self::$constPropMap[$name])) { $this->__set(self::$constPropMap[$name], null); } else if (in_array($name, self::$constPropMap)) { $this->__set($name, null); } else { unset($this->$name); } } /* Iterator */ public function current() { return $this->{self::$constPropMap[$this->iteratorCounter]}; } public function key() { return self::$constPropMap[$this->iteratorCounter]; } public function next() { $this->iteratorCounter *= 2; } public function rewind() { $this->iteratorCounter = self::SCHEME; } public function valid() { return $this->iteratorCounter <= self::FRAGMENT; } /* Countable */ public function count() { $result = 0; foreach (self::$constPropMap as $const => $name) { if ($this->$name !== null) { $result++; } } return $result; } /* JsonSerializable */ public function jsonSerialize() { return $this->__toString(); } } $uri = new URI('http://www.google.com/'); $uri['query']['foo'] = '&bar'; echo $uri;
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  (null)
number of ops:  10
compiled vars:  !0 = $uri
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   DECLARE_CLASS                                            'uri'
  215     1        NEW                                              $1      'URI'
          2        SEND_VAL_EX                                              'http%3A%2F%2Fwww.google.com%2F'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !0, $1
  216     5        FETCH_DIM_W                                      $4      !0, 'query'
          6        ASSIGN_DIM                                               $4, 'foo'
          7        OP_DATA                                                  '%26bar'
  218     8        ECHO                                                     !0
          9      > RETURN                                                   1

Class URI:
Function validatescheme:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  validateScheme
number of ops:  7
compiled vars:  !0 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   41     0  E >   INIT_FCALL                                               'preg_match'
          1        SEND_VAL                                                 '%2F%5E%5Ba-z%5D%5Ba-z0-9%2B.%5C-%5D%2A%24%2Fi'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                         $1      
          4        BOOL                                             ~2      $1
          5      > RETURN                                                   ~2
   42     6*     > RETURN                                                   null

End of function validatescheme

Function __construct:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 5, Position 2 = 11
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 16
Branch analysis from position: 12
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 16
2 jumps found. (Code = 77) Position 1 = 17, Position 2 = 27
Branch analysis from position: 17
2 jumps found. (Code = 78) Position 1 = 18, Position 2 = 27
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
Branch analysis from position: 27
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 27
Branch analysis from position: 11
filename:       /in/2fBEZ
function name:  __construct
number of ops:  29
compiled vars:  !0 = $uri, !1 = $parts, !2 = $value, !3 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   44     0  E >   RECV                                             !0      
   46     1        ASSIGN                                                   !1, <array>
   47     2        CAST                                          6  ~5      !0
          3        IS_NOT_IDENTICAL                                 ~6      ~5, ''
          4      > JMPZ_EX                                          ~6      ~6, ->11
          5    >   INIT_FCALL                                               'parse_url'
          6        SEND_VAR                                                 !0
          7        DO_ICALL                                         $7      
          8        ASSIGN                                           ~8      !1, $7
          9        TYPE_CHECK                                    4  ~9      ~8
         10        BOOL                                             ~6      ~9
         11    > > JMPZ                                                     ~6, ->16
   48    12    >   NEW                                              $10     'InvalidArgumentException'
         13        SEND_VAL_EX                                              'Invalid+URI'
         14        DO_FCALL                                      0          
         15      > THROW                                         0          $10
   51    16    > > FE_RESET_R                                       $12     !1, ->27
         17    > > FE_FETCH_R                                       ~13     $12, !2, ->27
         18    >   ASSIGN                                                   !3, ~13
   52    19        INIT_METHOD_CALL                                         '__set'
         20        SEND_VAR_EX                                              !3
         21        INIT_FCALL                                               'urldecode'
         22        SEND_VAR                                                 !2
         23        DO_ICALL                                         $15     
         24        SEND_VAR_NO_REF_EX                                       $15
         25        DO_FCALL                                      0          
   51    26      > JMP                                                      ->17
         27    >   FE_FREE                                                  $12
   54    28      > RETURN                                                   null

End of function __construct

Function __get:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 14
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 14
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  __get
number of ops:  17
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   56     0  E >   RECV                                             !0      
   58     1        INIT_FCALL                                               'in_array'
          2        SEND_VAR                                                 !0
          3        FETCH_STATIC_PROP_R          global lock         ~1      'constPropMap'
          4        SEND_VAL                                                 ~1
          5        DO_ICALL                                         $2      
          6        BOOL_NOT                                         ~3      $2
          7      > JMPZ                                                     ~3, ->14
   59     8    >   INIT_FCALL                                               'trigger_error'
          9        CONCAT                                           ~4      'Undefined+property%3A+URI%3A%3A%24', !0
         10        SEND_VAL                                                 ~4
         11        SEND_VAL                                                 1024
         12        DO_ICALL                                                 
   60    13      > RETURN                                                   null
   63    14    >   FETCH_OBJ_R                                      ~6      !0
         15      > RETURN                                                   ~6
   64    16*     > RETURN                                                   null

End of function __get

Function __set:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 7
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 9, Position 2 = 13
Branch analysis from position: 9
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
Branch analysis from position: 13
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 21
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 43
Branch analysis from position: 27
2 jumps found. (Code = 46) Position 1 = 29, Position 2 = 34
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 35, Position 2 = 39
Branch analysis from position: 35
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 39
1 jumps found. (Code = 42) Position 1 = 45
Branch analysis from position: 45
Branch analysis from position: 34
Branch analysis from position: 43
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  __set
number of ops:  46
compiled vars:  !0 = $name, !1 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   66     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   68     2        TYPE_CHECK                                    2          !1
          3      > JMPZ                                                     ~2, ->7
   69     4    >   ASSIGN_OBJ                                               !0
          5        OP_DATA                                                  null
          6      > JMP                                                      ->45
   70     7    >   IS_IDENTICAL                                             !0, 'port'
          8      > JMPZ                                                     ~4, ->13
   71     9    >   CAST                                          4  ~6      !1
         10        ASSIGN_OBJ                                               'port'
         11        OP_DATA                                                  ~6
         12      > JMP                                                      ->45
   72    13    >   IS_IDENTICAL                                             !0, 'query'
         14      > JMPZ                                                     ~7, ->21
   73    15    >   INIT_FCALL                                               'parse_str'
         16        SEND_VAR                                                 !1
         17        FETCH_OBJ_W                                      $8      'query'
         18        SEND_REF                                                 $8
         19        DO_ICALL                                                 
         20      > JMP                                                      ->45
   74    21    >   INIT_FCALL                                               'in_array'
         22        SEND_VAR                                                 !0
         23        FETCH_STATIC_PROP_R          unknown             ~10     'constPropMap'
         24        SEND_VAL                                                 ~10
         25        DO_ICALL                                         $11     
         26      > JMPZ                                                     $11, ->43
   75    27    >   IS_IDENTICAL                                     ~12     !0, 'scheme'
         28      > JMPZ_EX                                          ~12     ~12, ->34
         29    >   INIT_METHOD_CALL                                         'validateScheme'
         30        SEND_VAR                                                 !1
         31        DO_FCALL                                      0  $13     
         32        BOOL_NOT                                         ~14     $13
         33        BOOL                                             ~12     ~14
         34    > > JMPZ                                                     ~12, ->39
   76    35    >   NEW                                              $15     'InvalidArgumentException'
         36        SEND_VAL_EX                                              'Invalid+URI+scheme'
         37        DO_FCALL                                      0          
         38      > THROW                                         0          $15
   79    39    >   CAST                                          6  ~18     !1
         40        ASSIGN_OBJ                                               !0
         41        OP_DATA                                                  ~18
         42      > JMP                                                      ->45
   82    43    >   ASSIGN_OBJ                                               !0
         44        OP_DATA                                                  !1
   84    45    > > RETURN                                                   null

End of function __set

Function __tostring:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 6
Branch analysis from position: 3
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 35
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 25
Branch analysis from position: 11
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 24
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 35
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 37, Position 2 = 42
Branch analysis from position: 37
2 jumps found. (Code = 43) Position 1 = 45, Position 2 = 51
Branch analysis from position: 45
2 jumps found. (Code = 43) Position 1 = 53, Position 2 = 59
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 59
Branch analysis from position: 51
Branch analysis from position: 42
Branch analysis from position: 35
Branch analysis from position: 24
Branch analysis from position: 25
Branch analysis from position: 35
Branch analysis from position: 6
filename:       /in/2fBEZ
function name:  __toString
number of ops:  63
compiled vars:  !0 = $result
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   88     0  E >   ASSIGN                                                   !0, ''
   90     1        ISSET_ISEMPTY_PROP_OBJ                                   'scheme'
          2      > JMPZ                                                     ~2, ->6
   91     3    >   FETCH_OBJ_R                                      ~3      'scheme'
          4        CONCAT                                           ~4      ~3, '%3A'
          5        ASSIGN                                                   !0, ~4
   94     6    >   ISSET_ISEMPTY_PROP_OBJ                                   'host'
          7      > JMPZ                                                     ~6, ->35
   95     8    >   ASSIGN_OP                                     8          !0, '%2F%2F'
   97     9        ISSET_ISEMPTY_PROP_OBJ                                   'user'
         10      > JMPZ                                                     ~8, ->25
   98    11    >   INIT_FCALL                                               'urlencode'
         12        FETCH_OBJ_R                                      ~9      'user'
         13        SEND_VAL                                                 ~9
         14        DO_ICALL                                         $10     
         15        ASSIGN_OP                                     8          !0, $10
  100    16        ISSET_ISEMPTY_PROP_OBJ                                   'pass'
         17      > JMPZ                                                     ~12, ->24
  101    18    >   INIT_FCALL                                               'urlencode'
         19        FETCH_OBJ_R                                      ~13     'pass'
         20        SEND_VAL                                                 ~13
         21        DO_ICALL                                         $14     
         22        CONCAT                                           ~15     '%3A', $14
         23        ASSIGN_OP                                     8          !0, ~15
  104    24    >   ASSIGN_OP                                     8          !0, '%40'
  107    25    >   INIT_FCALL                                               'urlencode'
         26        FETCH_OBJ_R                                      ~18     'host'
         27        SEND_VAL                                                 ~18
         28        DO_ICALL                                         $19     
         29        ASSIGN_OP                                     8          !0, $19
  109    30        ISSET_ISEMPTY_PROP_OBJ                                   'port'
         31      > JMPZ                                                     ~21, ->35
  110    32    >   FETCH_OBJ_R                                      ~22     'port'
         33        CONCAT                                           ~23     '%3A', ~22
         34        ASSIGN_OP                                     8          !0, ~23
  114    35    >   ISSET_ISEMPTY_PROP_OBJ                                   'path'
         36      > JMPZ                                                     ~25, ->42
  115    37    >   INIT_FCALL                                               'urlencode'
         38        FETCH_OBJ_R                                      ~26     'path'
         39        SEND_VAL                                                 ~26
         40        DO_ICALL                                         $27     
         41        ASSIGN_OP                                     8          !0, $27
  118    42    >   ISSET_ISEMPTY_PROP_OBJ                           ~29     'query'
         43        BOOL_NOT                                         ~30     ~29
         44      > JMPZ                                                     ~30, ->51
  119    45    >   INIT_FCALL                                               'http_build_query'
         46        FETCH_OBJ_R                                      ~31     'query'
         47        SEND_VAL                                                 ~31
         48        DO_ICALL                                         $32     
         49        CONCAT                                           ~33     '%3F', $32
         50        ASSIGN_OP                                     8          !0, ~33
  122    51    >   ISSET_ISEMPTY_PROP_OBJ                                   'fragment'
         52      > JMPZ                                                     ~35, ->59
  123    53    >   INIT_FCALL                                               'urlencode'
         54        FETCH_OBJ_R                                      ~36     'fragment'
         55        SEND_VAL                                                 ~36
         56        DO_ICALL                                         $37     
         57        CONCAT                                           ~38     '%23', $37
         58        ASSIGN_OP                                     8          !0, ~38
  126    59    >   VERIFY_RETURN_TYPE                                       !0
         60      > RETURN                                                   !0
  127    61*       VERIFY_RETURN_TYPE                                       
         62*     > RETURN                                                   null

End of function __tostring

Function offsetexists:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 3, Position 2 = 6
Branch analysis from position: 3
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
filename:       /in/2fBEZ
function name:  offsetExists
number of ops:  8
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  131     0  E >   RECV                                             !0      
  133     1        ISSET_ISEMPTY_PROP_OBJ                           ~1      !0
          2      > JMPNZ_EX                                         ~1      ~1, ->6
          3    >   FETCH_STATIC_PROP_IS                             ~2      'constPropMap'
          4        ISSET_ISEMPTY_DIM_OBJ                         0  ~3      ~2, !0
          5        BOOL                                             ~1      ~3
          6    > > RETURN                                                   ~1
  134     7*     > RETURN                                                   null

End of function offsetexists

Function offsetget:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 12
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  offsetGet
number of ops:  17
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  136     0  E >   RECV                                             !0      
  138     1        FETCH_STATIC_PROP_IS                             ~1      'constPropMap'
          2        ISSET_ISEMPTY_DIM_OBJ                         0          ~1, !0
          3      > JMPZ                                                     ~2, ->12
  139     4    >   INIT_METHOD_CALL                                         '__get'
          5        CHECK_FUNC_ARG                                           
          6        FETCH_STATIC_PROP_FUNC_ARG   unknown             $3      'constPropMap'
          7        FETCH_DIM_FUNC_ARG                               $4      $3, !0
          8        SEND_FUNC_ARG                                            $4
          9        DO_FCALL                                      0  $5      
         10      > RETURN                                                   $5
         11*       JMP                                                      ->16
  141    12    >   INIT_METHOD_CALL                                         '__get'
         13        SEND_VAR_EX                                              !0
         14        DO_FCALL                                      0  $6      
         15      > RETURN                                                   $6
  143    16*     > RETURN                                                   null

End of function offsetget

Function offsetset:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 13
Branch analysis from position: 5
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  offsetSet
number of ops:  18
compiled vars:  !0 = $name, !1 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  145     0  E >   RECV                                             !0      
          1        RECV                                             !1      
  147     2        FETCH_STATIC_PROP_IS                             ~2      'constPropMap'
          3        ISSET_ISEMPTY_DIM_OBJ                         0          ~2, !0
          4      > JMPZ                                                     ~3, ->13
  148     5    >   INIT_METHOD_CALL                                         '__set'
          6        CHECK_FUNC_ARG                                           
          7        FETCH_STATIC_PROP_FUNC_ARG   unknown             $4      'constPropMap'
          8        FETCH_DIM_FUNC_ARG                               $5      $4, !0
          9        SEND_FUNC_ARG                                            $5
         10        SEND_VAR_EX                                              !1
         11        DO_FCALL                                      0          
         12      > JMP                                                      ->17
  150    13    >   INIT_METHOD_CALL                                         '__set'
         14        SEND_VAR_EX                                              !0
         15        SEND_VAR_EX                                              !1
         16        DO_FCALL                                      0          
  152    17    > > RETURN                                                   null

End of function offsetset

Function offsetunset:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 12
Branch analysis from position: 4
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 23
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
Branch analysis from position: 23
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  offsetUnset
number of ops:  25
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  154     0  E >   RECV                                             !0      
  156     1        FETCH_STATIC_PROP_IS                             ~1      'constPropMap'
          2        ISSET_ISEMPTY_DIM_OBJ                         0          ~1, !0
          3      > JMPZ                                                     ~2, ->12
  157     4    >   INIT_METHOD_CALL                                         '__set'
          5        CHECK_FUNC_ARG                                           
          6        FETCH_STATIC_PROP_FUNC_ARG   unknown             $3      'constPropMap'
          7        FETCH_DIM_FUNC_ARG                               $4      $3, !0
          8        SEND_FUNC_ARG                                            $4
          9        SEND_VAL_EX                                              null
         10        DO_FCALL                                      0          
         11      > JMP                                                      ->24
  158    12    >   INIT_FCALL                                               'in_array'
         13        SEND_VAR                                                 !0
         14        FETCH_STATIC_PROP_R          unknown             ~6      'constPropMap'
         15        SEND_VAL                                                 ~6
         16        DO_ICALL                                         $7      
         17      > JMPZ                                                     $7, ->23
  159    18    >   INIT_METHOD_CALL                                         '__set'
         19        SEND_VAR_EX                                              !0
         20        SEND_VAL_EX                                              null
         21        DO_FCALL                                      0          
         22      > JMP                                                      ->24
  161    23    >   UNSET_OBJ                                                !0
  163    24    > > RETURN                                                   null

End of function offsetunset

Function current:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  current
number of ops:  6
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  169     0  E >   FETCH_OBJ_R                                      ~1      'iteratorCounter'
          1        FETCH_STATIC_PROP_R          unknown             ~0      'constPropMap'
          2        FETCH_DIM_R                                      ~2      ~0, ~1
          3        FETCH_OBJ_R                                      ~3      ~2
          4      > RETURN                                                   ~3
  170     5*     > RETURN                                                   null

End of function current

Function key:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  key
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  174     0  E >   FETCH_OBJ_R                                      ~1      'iteratorCounter'
          1        FETCH_STATIC_PROP_R          unknown             ~0      'constPropMap'
          2        FETCH_DIM_R                                      ~2      ~0, ~1
          3      > RETURN                                                   ~2
  175     4*     > RETURN                                                   null

End of function key

Function next:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  next
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  179     0  E >   ASSIGN_OBJ_OP                                 3          'iteratorCounter'
          1        OP_DATA                                                  2
  180     2      > RETURN                                                   null

End of function next

Function rewind:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  rewind
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  184     0  E >   ASSIGN_OBJ                                               'iteratorCounter'
          1        OP_DATA                                                  1
  185     2      > RETURN                                                   null

End of function rewind

Function valid:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2fBEZ
function name:  valid
number of ops:  4
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  189     0  E >   FETCH_OBJ_R                                      ~0      'iteratorCounter'
          1        IS_SMALLER_OR_EQUAL                              ~1      ~0, 128
          2      > RETURN                                                   ~1
  190     3*     > RETURN                                                   null

End of function valid

Function count:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 10
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 10
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 9
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 9
Branch analysis from position: 10
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
filename:       /in/2fBEZ
function name:  count
number of ops:  13
compiled vars:  !0 = $result, !1 = $name, !2 = $const
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  196     0  E >   ASSIGN                                                   !0, 0
  198     1        FETCH_STATIC_PROP_R          unknown             ~4      'constPropMap'
          2      > 

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
165.32 ms | 1428 KiB | 29 Q