3v4l.org

run code in 300+ PHP versions simultaneously
<?php $entity = makeEntity(null, 'SuperWidget', [ 'foo' => 'bar', 'baz' => 'bla', ], // false // Toggle these two line's comments. true // Leave off or false to not show logging. ); $entity->send(_m('propBoo', 'hoo')); $entity->send(_m('propOop', 'Php')); $entity->send(_m('propBaz', 'Apt')); $entity->send(_m('withProps', [ ['propBaz', 'Oth'], ['propOth', 'Win'], ])); $entity->send(_m('propGen', ['Era','Tor',])); // Erases the history, should we have it? $entity->send(_m('fromProps', [['propOof','Uhh']])); $props = $entity->send(_i()); foreach($props as $prop => $props) { echo sprintf('%s(%s=%s)%s', $entity->key(), $prop, \json_encode($props), PHP_EOL ); } function makeEntity( ?int $id = null, string $type, ?array $props = null, ?bool $log = null ) { $id = $id ?? random_int(1, 500000); $logger = _f(!$log ?: function($signal, $message = null, ?string $tmpl = null) use($id) { $tmpl = sprintf('Receiver(%d, Signal: %s)', $id, $tmpl ?? '[%s](%s)'); echo sprintf($tmpl, $signal, \json_encode($message)).PHP_EOL; }); $apply = function($changes, $for) use($logger) { foreach($changes as $set) { $action = array_shift($set); // First one is the method, PropertySet list($prop, $value) = $set; if (substr($prop, 0, 7) !== 'Stream:') $for[$prop] = $value; $logger(sprintf('Apply(%s=%s)', $action, \json_encode($set)), null, '%s'); } return $for; }; $propDecorator = function(array $changes, array $changeSet = []) { return array_reduce($changes, function($changeSet, array $change) { $propName = strtolower(substr($change[0], 4)); $changeSet[] = ['PropertySet', $propName, $change]; return $changeSet; }, $changeSet); }; $filterSignalOut = function($changeSet) { return array_filter($changeSet, function($change) { return substr($change[1], 0, 7) !== 'Stream:'; }); }; $filterSignalIn = function($changeSet) { return array_filter($changeSet, function($change) { return substr($change[1], 0, 7) === 'Stream:'; }); }; $changeSet = [ ['SIGINI', 'Stream:Init', microtime(),], ['SIGIID', 'Stream:InitId', $id], ['SIGBND', 'Stream:BindProps', $props,], // Initial state. ]; while (true) { list($signal, $message) = yield; $signal = preg_replace('/[^a-z\d]/i', '', (string) $signal); $logger($signal, $message); if (substr($signal, 0, 4) === 'prop') { $propName = strtolower(substr($signal, 4)); $changeSet[] = ['PropertySet', $propName, $message]; } if ($signal === 'withProps') { $changeSet = $propDecorator($message, $changeSet); } if ($signal === 'fromProps') { $changeSet[] = ['SIGFRM', 'Stream:From', microtime(),]; $changeSet[] = ['SIGIFO', 'Stream:PrunedHistory', \json_encode($filterSignalOut($changeSet)), ]; $changeSet = $propDecorator($message, $filterSignalIn($changeSet)); } if ($signal === 'iterator') { $changeSet[] = ['SIGEND', 'Stream:End', microtime(),]; yield $type => $apply($changeSet, $props); } } } function _f($F = null) {return is_callable($F) ? $F : function(){};} function _i() {return _m('iterator');} function _m($signal, $message = null) {return [$signal ?? 'iterator',$message];}
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 56, Position 2 = 72
Branch analysis from position: 56
2 jumps found. (Code = 78) Position 1 = 57, Position 2 = 72
Branch analysis from position: 57
1 jumps found. (Code = 42) Position 1 = 56
Branch analysis from position: 56
Branch analysis from position: 72
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 72
filename:       /in/1W8dI
function name:  (null)
number of ops:  74
compiled vars:  !0 = $entity, !1 = $props, !2 = $prop
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL_BY_NAME                                       'makeEntity'
          1        SEND_VAL_EX                                              null
    4     2        SEND_VAL_EX                                              'SuperWidget'
    5     3        SEND_VAL_EX                                              <array>
    9     4        SEND_VAL_EX                                              <true>
          5        DO_FCALL                                      0  $3      
    3     6        ASSIGN                                                   !0, $3
   12     7        INIT_METHOD_CALL                                         !0, 'send'
          8        INIT_FCALL_BY_NAME                                       '_m'
          9        SEND_VAL_EX                                              'propBoo'
         10        SEND_VAL_EX                                              'hoo'
         11        DO_FCALL                                      0  $5      
         12        SEND_VAR_NO_REF_EX                                       $5
         13        DO_FCALL                                      0          
   13    14        INIT_METHOD_CALL                                         !0, 'send'
         15        INIT_FCALL_BY_NAME                                       '_m'
         16        SEND_VAL_EX                                              'propOop'
         17        SEND_VAL_EX                                              'Php'
         18        DO_FCALL                                      0  $7      
         19        SEND_VAR_NO_REF_EX                                       $7
         20        DO_FCALL                                      0          
   14    21        INIT_METHOD_CALL                                         !0, 'send'
         22        INIT_FCALL_BY_NAME                                       '_m'
         23        SEND_VAL_EX                                              'propBaz'
         24        SEND_VAL_EX                                              'Apt'
         25        DO_FCALL                                      0  $9      
         26        SEND_VAR_NO_REF_EX                                       $9
         27        DO_FCALL                                      0          
   15    28        INIT_METHOD_CALL                                         !0, 'send'
         29        INIT_FCALL_BY_NAME                                       '_m'
         30        SEND_VAL_EX                                              'withProps'
   16    31        SEND_VAL_EX                                              <array>
         32        DO_FCALL                                      0  $11     
         33        SEND_VAR_NO_REF_EX                                       $11
         34        DO_FCALL                                      0          
   19    35        INIT_METHOD_CALL                                         !0, 'send'
         36        INIT_FCALL_BY_NAME                                       '_m'
         37        SEND_VAL_EX                                              'propGen'
         38        SEND_VAL_EX                                              <array>
         39        DO_FCALL                                      0  $13     
         40        SEND_VAR_NO_REF_EX                                       $13
         41        DO_FCALL                                      0          
   22    42        INIT_METHOD_CALL                                         !0, 'send'
         43        INIT_FCALL_BY_NAME                                       '_m'
         44        SEND_VAL_EX                                              'fromProps'
         45        SEND_VAL_EX                                              <array>
         46        DO_FCALL                                      0  $15     
         47        SEND_VAR_NO_REF_EX                                       $15
         48        DO_FCALL                                      0          
   24    49        INIT_METHOD_CALL                                         !0, 'send'
         50        INIT_FCALL_BY_NAME                                       '_i'
         51        DO_FCALL                                      0  $17     
         52        SEND_VAR_NO_REF_EX                                       $17
         53        DO_FCALL                                      0  $18     
         54        ASSIGN                                                   !1, $18
   26    55      > FE_RESET_R                                       $20     !1, ->72
         56    > > FE_FETCH_R                                       ~21     $20, !1, ->72
         57    >   ASSIGN                                                   !2, ~21
   27    58        INIT_FCALL                                               'sprintf'
         59        SEND_VAL                                                 '%25s%28%25s%3D%25s%29%25s'
   28    60        INIT_METHOD_CALL                                         !0, 'key'
         61        DO_FCALL                                      0  $23     
         62        SEND_VAR                                                 $23
   29    63        SEND_VAR                                                 !2
   30    64        INIT_FCALL                                               'json_encode'
         65        SEND_VAR                                                 !1
         66        DO_ICALL                                         $24     
         67        SEND_VAR                                                 $24
   31    68        SEND_VAL                                                 '%0A'
         69        DO_ICALL                                         $25     
         70        ECHO                                                     $25
   26    71      > JMP                                                      ->56
         72    >   FE_FREE                                                  $20
  109    73      > RETURN                                                   1

Function makeentity:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 132
Branch analysis from position: 132
2 jumps found. (Code = 44) Position 1 = 133, Position 2 = 46
Branch analysis from position: 133
1 jumps found. (Code = 161) Position 1 = -2
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 70, Position 2 = 83
Branch analysis from position: 70
2 jumps found. (Code = 43) Position 1 = 85, Position 2 = 90
Branch analysis from position: 85
2 jumps found. (Code = 43) Position 1 = 92, Position 2 = 118
Branch analysis from position: 92
2 jumps found. (Code = 43) Position 1 = 120, Position 2 = 132
Branch analysis from position: 120
2 jumps found. (Code = 44) Position 1 = 133, Position 2 = 46
Branch analysis from position: 133
Branch analysis from position: 46
Branch analysis from position: 132
Branch analysis from position: 118
Branch analysis from position: 90
Branch analysis from position: 83
filename:       /in/1W8dI
function name:  makeEntity
number of ops:  134
compiled vars:  !0 = $id, !1 = $type, !2 = $props, !3 = $log, !4 = $logger, !5 = $apply, !6 = $propDecorator, !7 = $filterSignalOut, !8 = $filterSignalIn, !9 = $changeSet, !10 = $signal, !11 = $message, !12 = $propName
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   35     0  E >   RECV_INIT                                        !0      null
          1        RECV                                             !1      
          2        RECV_INIT                                        !2      null
          3        RECV_INIT                                        !3      null
          4        GENERATOR_CREATE                                         
   41     5        COALESCE                                         ~13     !0
          6        INIT_FCALL                                               'random_int'
          7        SEND_VAL                                                 1
          8        SEND_VAL                                                 500000
          9        DO_ICALL                                         $14     
         10        QM_ASSIGN                                        ~13     $14
         11        ASSIGN                                                   !0, ~13
   42    12        INIT_FCALL_BY_NAME                                       '_f'
         13        BOOL_NOT                                         ~16     !3
         14        JMP_SET                                          ~17     ~16, ->18
         15        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A42%240'
         16        BIND_LEXICAL                                             ~18, !0
   45    17        QM_ASSIGN                                        ~17     ~18
         18        SEND_VAL_EX                                              ~17
         19        DO_FCALL                                      0  $19     
   42    20        ASSIGN                                                   !4, $19
   46    21        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A46%241'
         22        BIND_LEXICAL                                             ~21, !4
         23        ASSIGN                                                   !5, ~21
   55    24        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A55%242'
         25        ASSIGN                                                   !6, ~23
   62    26        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A62%244'
         27        ASSIGN                                                   !7, ~25
   67    28        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A67%246'
         29        ASSIGN                                                   !8, ~27
   73    30        INIT_ARRAY                                       ~29     'SIGINI'
         31        ADD_ARRAY_ELEMENT                                ~29     'Stream%3AInit'
         32        INIT_FCALL                                               'microtime'
         33        DO_ICALL                                         $30     
         34        ADD_ARRAY_ELEMENT                                ~29     $30
         35        INIT_ARRAY                                       ~31     ~29
   74    36        INIT_ARRAY                                       ~32     'SIGIID'
         37        ADD_ARRAY_ELEMENT                                ~32     'Stream%3AInitId'
         38        ADD_ARRAY_ELEMENT                                ~32     !0
         39        ADD_ARRAY_ELEMENT                                ~31     ~32
   75    40        INIT_ARRAY                                       ~33     'SIGBND'
         41        ADD_ARRAY_ELEMENT                                ~33     'Stream%3ABindProps'
         42        ADD_ARRAY_ELEMENT                                ~33     !2
         43        ADD_ARRAY_ELEMENT                                ~31     ~33
   72    44        ASSIGN                                                   !9, ~31
   78    45      > JMP                                                      ->132
   79    46    >   YIELD                                            $35     
         47        FETCH_LIST_R                                     $36     $35, 0
         48        ASSIGN                                                   !10, $36
         49        FETCH_LIST_R                                     $38     $35, 1
         50        ASSIGN                                                   !11, $38
         51        FREE                                                     $35
   80    52        INIT_FCALL                                               'preg_replace'
         53        SEND_VAL                                                 '%2F%5B%5Ea-z%5Cd%5D%2Fi'
         54        SEND_VAL                                                 ''
         55        CAST                                          6  ~40     !10
         56        SEND_VAL                                                 ~40
         57        DO_ICALL                                         $41     
         58        ASSIGN                                                   !10, $41
   81    59        INIT_DYNAMIC_CALL                                        !4
         60        SEND_VAR_EX                                              !10
         61        SEND_VAR_EX                                              !11
         62        DO_FCALL                                      0          
   83    63        INIT_FCALL                                               'substr'
         64        SEND_VAR                                                 !10
         65        SEND_VAL                                                 0
         66        SEND_VAL                                                 4
         67        DO_ICALL                                         $44     
         68        IS_IDENTICAL                                             $44, 'prop'
         69      > JMPZ                                                     ~45, ->83
   84    70    >   INIT_FCALL                                               'strtolower'
         71        INIT_FCALL                                               'substr'
         72        SEND_VAR                                                 !10
         73        SEND_VAL                                                 4
         74        DO_ICALL                                         $46     
         75        SEND_VAR                                                 $46
         76        DO_ICALL                                         $47     
         77        ASSIGN                                                   !12, $47
   85    78        INIT_ARRAY                                       ~50     'PropertySet'
         79        ADD_ARRAY_ELEMENT                                ~50     !12
         80        ADD_ARRAY_ELEMENT                                ~50     !11
         81        ASSIGN_DIM                                               !9
         82        OP_DATA                                                  ~50
   88    83    >   IS_IDENTICAL                                             !10, 'withProps'
         84      > JMPZ                                                     ~51, ->90
   89    85    >   INIT_DYNAMIC_CALL                                        !6
         86        SEND_VAR_EX                                              !11
         87        SEND_VAR_EX                                              !9
         88        DO_FCALL                                      0  $52     
         89        ASSIGN                                                   !9, $52
   92    90    >   IS_IDENTICAL                                             !10, 'fromProps'
         91      > JMPZ                                                     ~54, ->118
   93    92    >   INIT_ARRAY                                       ~56     'SIGFRM'
         93        ADD_ARRAY_ELEMENT                                ~56     'Stream%3AFrom'
         94        INIT_FCALL                                               'microtime'
         95        DO_ICALL                                         $57     
         96        ADD_ARRAY_ELEMENT                                ~56     $57
         97        ASSIGN_DIM                                               !9
         98        OP_DATA                                                  ~56
   94    99        INIT_ARRAY                                       ~59     'SIGIFO'
        100        ADD_ARRAY_ELEMENT                                ~59     'Stream%3APrunedHistory'
   95   101        INIT_FCALL                                               'json_encode'
        102        INIT_DYNAMIC_CALL                                        !7
        103        SEND_VAR_EX                                              !9
        104        DO_FCALL                                      0  $60     
        105        SEND_VAR                                                 $60
        106        DO_ICALL                                         $61     
        107        ADD_ARRAY_ELEMENT                                ~59     $61
   94   108        ASSIGN_DIM                                               !9
   95   109        OP_DATA                                                  ~59
   97   110        INIT_DYNAMIC_CALL                                        !6
        111        SEND_VAR_EX                                              !11
        112        INIT_DYNAMIC_CALL                                        !8
        113        SEND_VAR_EX                                              !9
        114        DO_FCALL                                      0  $62     
        115        SEND_VAR_NO_REF_EX                                       $62
        116        DO_FCALL                                      0  $63     
        117        ASSIGN                                                   !9, $63
  100   118    >   IS_IDENTICAL                                             !10, 'iterator'
        119      > JMPZ                                                     ~65, ->132
  101   120    >   INIT_ARRAY                                       ~67     'SIGEND'
        121        ADD_ARRAY_ELEMENT                                ~67     'Stream%3AEnd'
        122        INIT_FCALL                                               'microtime'
        123        DO_ICALL                                         $68     
        124        ADD_ARRAY_ELEMENT                                ~67     $68
        125        ASSIGN_DIM                                               !9
        126        OP_DATA                                                  ~67
  102   127        INIT_DYNAMIC_CALL                                        !5
        128        SEND_VAR_EX                                              !9
        129        SEND_VAR_EX                                              !2
        130        DO_FCALL                                      0  $69     
        131        YIELD                                                    $69, !1
   78   132    > > JMPNZ                                                    <true>, ->46
  105   133    > > GENERATOR_RETURN                                         

End of function makeentity

Function %00%7Bclosure%7D%2Fin%2F1W8dI%3A42%240:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/1W8dI
function name:  {closure}
number of ops:  23
compiled vars:  !0 = $signal, !1 = $message, !2 = $tmpl, !3 = $id
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   42     0  E >   RECV                                             !0      
          1        RECV_INIT                                        !1      null
          2        RECV_INIT                                        !2      null
          3        BIND_STATIC                                              !3
   43     4        INIT_FCALL                                               'sprintf'
          5        SEND_VAL                                                 'Receiver%28%25d%2C+Signal%3A+%25s%29'
          6        SEND_VAR                                                 !3
          7        COALESCE                                         ~4      !2
          8        QM_ASSIGN                                        ~4      '%5B%25s%5D%28%25s%29'
          9        SEND_VAL                                                 ~4
         10        DO_ICALL                                         $5      
         11        ASSIGN                                                   !2, $5
   44    12        INIT_FCALL                                               'sprintf'
         13        SEND_VAR                                                 !2
         14        SEND_VAR                                                 !0
         15        INIT_FCALL                                               'json_encode'
         16        SEND_VAR                                                 !1
         17        DO_ICALL                                         $7      
         18        SEND_VAR                                                 $7
         19        DO_ICALL                                         $8      
         20        CONCAT                                           ~9      $8, '%0A'
         21        ECHO                                                     ~9
   45    22      > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2F1W8dI%3A42%240

Function %00%7Bclosure%7D%2Fin%2F1W8dI%3A46%241:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 4, Position 2 = 38
Branch analysis from position: 4
2 jumps found. (Code = 78) Position 1 = 5, Position 2 = 38
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 22, Position 2 = 24
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 4
Branch analysis from position: 4
Branch analysis from position: 24
Branch analysis from position: 38
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 38
filename:       /in/1W8dI
function name:  {closure}
number of ops:  41
compiled vars:  !0 = $changes, !1 = $for, !2 = $logger, !3 = $set, !4 = $action, !5 = $prop, !6 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   46     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        BIND_STATIC                                              !2
   47     3      > FE_RESET_R                                       $7      !0, ->38
          4    > > FE_FETCH_R                                               $7, !3, ->38
   48     5    >   INIT_FCALL                                               'array_shift'
          6        SEND_REF                                                 !3
          7        DO_ICALL                                         $8      
          8        ASSIGN                                                   !4, $8
   49     9        QM_ASSIGN                                        ~10     !3
         10        FETCH_LIST_R                                     $11     ~10, 0
         11        ASSIGN                                                   !5, $11
         12        FETCH_LIST_R                                     $13     ~10, 1
         13        ASSIGN                                                   !6, $13
         14        FREE                                                     ~10
   50    15        INIT_FCALL                                               'substr'
         16        SEND_VAR                                                 !5
         17        SEND_VAL                                                 0
         18        SEND_VAL                                                 7
         19        DO_ICALL                                         $15     
         20        IS_NOT_IDENTICAL                                         $15, 'Stream%3A'
         21      > JMPZ                                                     ~16, ->24
         22    >   ASSIGN_DIM                                               !1, !5
         23        OP_DATA                                                  !6
   51    24    >   INIT_DYNAMIC_CALL                                        !2
         25        INIT_FCALL                                               'sprintf'
         26        SEND_VAL                                                 'Apply%28%25s%3D%25s%29'
         27        SEND_VAR                                                 !4
         28        INIT_FCALL                                               'json_encode'
         29        SEND_VAR                                                 !3
         30        DO_ICALL                                         $18     
         31        SEND_VAR                                                 $18
         32        DO_ICALL                                         $19     
         33        SEND_VAR_NO_REF_EX                                       $19
         34        SEND_VAL_EX                                              null
         35        SEND_VAL_EX                                              '%25s'
         36        DO_FCALL                                      0          
   47    37      > JMP                                                      ->4
         38    >   FE_FREE                                                  $7
   53    39      > RETURN                                                   !1
   54    40*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2F1W8dI%3A46%241

Function %00%7Bclosure%7D%2Fin%2F1W8dI%3A55%242:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/1W8dI
function name:  {closure}
number of ops:  10
compiled vars:  !0 = $changes, !1 = $changeSet
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   55     0  E >   RECV                                             !0      
          1        RECV_INIT                                        !1      <array>
   56     2        INIT_FCALL                                               'array_reduce'
          3        SEND_VAR                                                 !0
          4        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A56%243'
   60     5        SEND_VAL                                                 ~2
          6        SEND_VAR                                                 !1
          7        DO_ICALL                                         $3      
          8      > RETURN                                                   $3
   61     9*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2F1W8dI%3A55%242

Function %00%7Bclosure%7D%2Fin%2F1W8dI%3A56%243:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/1W8dI
function name:  {closure}
number of ops:  18
compiled vars:  !0 = $changeSet, !1 = $change, !2 = $propName
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   56     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   57     2        INIT_FCALL                                               'strtolower'
          3        INIT_FCALL                                               'substr'
          4        FETCH_DIM_R                                      ~3      !1, 0
          5        SEND_VAL                                                 ~3
          6        SEND_VAL                                                 4
          7        DO_ICALL                                         $4      
          8        SEND_VAR                                                 $4
          9        DO_ICALL                                         $5      
         10        ASSIGN                                                   !2, $5
   58    11        INIT_ARRAY                                       ~8      'PropertySet'
         12        ADD_ARRAY_ELEMENT                                ~8      !2
         13        ADD_ARRAY_ELEMENT                                ~8      !1
         14        ASSIGN_DIM                                               !0
         15        OP_DATA                                                  ~8
   59    16      > RETURN                                                   !0
   60    17*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2F1W8dI%3A56%243

Function %00%7Bclosure%7D%2Fin%2F1W8dI%3A62%244:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/1W8dI
function name:  {closure}
number of ops:  8
compiled vars:  !0 = $changeSet
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   62     0  E >   RECV                                             !0      
   63     1        INIT_FCALL                                               'array_filter'
          2        SEND_VAR                                                 !0
          3        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A63%245'
   65     4        SEND_VAL                                                 ~1
          5        DO_ICALL                                         $2      
          6      > RETURN                                                   $2
   66     7*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2F1W8dI%3A62%244

Function %00%7Bclosure%7D%2Fin%2F1W8dI%3A63%245:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/1W8dI
function name:  {closure}
number of ops:  10
compiled vars:  !0 = $change
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   63     0  E >   RECV                                             !0      
   64     1        INIT_FCALL                                               'substr'
          2        FETCH_DIM_R                                      ~1      !0, 1
          3        SEND_VAL                                                 ~1
          4        SEND_VAL                                                 0
          5        SEND_VAL                                                 7
          6        DO_ICALL                                         $2      
          7        IS_NOT_IDENTICAL                                 ~3      $2, 'Stream%3A'
          8      > RETURN                                                   ~3
   65     9*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2F1W8dI%3A63%245

Function %00%7Bclosure%7D%2Fin%2F1W8dI%3A67%246:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/1W8dI
function name:  {closure}
number of ops:  8
compiled vars:  !0 = $changeSet
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   67     0  E >   RECV                                             !0      
   68     1        INIT_FCALL                                               'array_filter'
          2        SEND_VAR                                                 !0
          3        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2F1W8dI%3A68%247'
   70     4        SEND_VAL                                                 ~1
          5        DO_ICALL                

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
138.51 ms | 1433 KiB | 33 Q