3v4l.org

run code in 300+ PHP versions simultaneously
<?php function permission($filename) { $perms = fileperms($filename); if (($perms & 0xC000) == 0xC000) { $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { $info = 'p'; } else { $info = 'u'; } // владелец $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-')); // группа $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-')); // все $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-')); return $info; } function dir_list($dir) { if ($dir[strlen($dir)-1] != '/') $dir .= '/'; if (!is_dir($dir)) return array(); $dir_handle = opendir($dir); $dir_objects = array(); while ($object = readdir($dir_handle)) if (!in_array($object, array('.','..'))) { $filename = $dir . $object; $file_object = array( 'name' => $object, 'size' => filesize($filename), 'perm' => permission($filename), 'type' => filetype($filename), 'time' => date("d F Y H:i:s", filemtime($filename)) ); $dir_objects[] = $file_object; } return $dir_objects; } ?> call: <?php print_r(dir_list('/tmp')); ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/SGESK
function name:  (null)
number of ops:  8
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   60     0  E >   ECHO                                                     '%0Acall%3A%0A%0A'
   65     1        INIT_FCALL                                               'print_r'
          2        INIT_FCALL                                               'dir_list'
          3        SEND_VAL                                                 '%2Ftmp'
          4        DO_FCALL                                      0  $0      
          5        SEND_VAR                                                 $0
          6        DO_ICALL                                                 
   67     7      > RETURN                                                   1

Function permission:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 10
Branch analysis from position: 8
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 45
Branch analysis from position: 43
1 jumps found. (Code = 42) Position 1 = 46
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 49, Position 2 = 51
Branch analysis from position: 49
1 jumps found. (Code = 42) Position 1 = 52
Branch analysis from position: 52
2 jumps found. (Code = 43) Position 1 = 55, Position 2 = 62
Branch analysis from position: 55
2 jumps found. (Code = 43) Position 1 = 57, Position 2 = 59
Branch analysis from position: 57
1 jumps found. (Code = 42) Position 1 = 60
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 68
Branch analysis from position: 68
2 jumps found. (Code = 43) Position 1 = 71, Position 2 = 73
Branch analysis from position: 71
1 jumps found. (Code = 42) Position 1 = 74
Branch analysis from position: 74
2 jumps found. (Code = 43) Position 1 = 77, Position 2 = 79
Branch analysis from position: 77
1 jumps found. (Code = 42) Position 1 = 80
Branch analysis from position: 80
2 jumps found. (Code = 43) Position 1 = 83, Position 2 = 90
Branch analysis from position: 83
2 jumps found. (Code = 43) Position 1 = 85, Position 2 = 87
Branch analysis from position: 85
1 jumps found. (Code = 42) Position 1 = 88
Branch analysis from position: 88
1 jumps found. (Code = 42) Position 1 = 96
Branch analysis from position: 96
2 jumps found. (Code = 43) Position 1 = 99, Position 2 = 101
Branch analysis from position: 99
1 jumps found. (Code = 42) Position 1 = 102
Branch analysis from position: 102
2 jumps found. (Code = 43) Position 1 = 105, Position 2 = 107
Branch analysis from position: 105
1 jumps found. (Code = 42) Position 1 = 108
Branch analysis from position: 108
2 jumps found. (Code = 43) Position 1 = 111, Position 2 = 118
Branch analysis from position: 111
2 jumps found. (Code = 43) Position 1 = 113, Position 2 = 115
Branch analysis from position: 113
1 jumps found. (Code = 42) Position 1 = 116
Branch analysis from position: 116
1 jumps found. (Code = 42) Position 1 = 124
Branch analysis from position: 124
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 115
1 jumps found. (Code = 42) Position 1 = 124
Branch analysis from position: 124
Branch analysis from position: 118
2 jumps found. (Code = 43) Position 1 = 120, Position 2 = 122
Branch analysis from position: 120
1 jumps found. (Code = 42) Position 1 = 123
Branch analysis from position: 123
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 122
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 107
2 jumps found. (Code = 43) Position 1 = 111, Position 2 = 118
Branch analysis from position: 111
Branch analysis from position: 118
Branch analysis from position: 101
2 jumps found. (Code = 43) Position 1 = 105, Position 2 = 107
Branch analysis from position: 105
Branch analysis from position: 107
Branch analysis from position: 87
1 jumps found. (Code = 42) Position 1 = 96
Branch analysis from position: 96
Branch analysis from position: 90
2 jumps found. (Code = 43) Position 1 = 92, Position 2 = 94
Branch analysis from position: 92
1 jumps found. (Code = 42) Position 1 = 95
Branch analysis from position: 95
2 jumps found. (Code = 43) Position 1 = 99, Position 2 = 101
Branch analysis from position: 99
Branch analysis from position: 101
Branch analysis from position: 94
2 jumps found. (Code = 43) Position 1 = 99, Position 2 = 101
Branch analysis from position: 99
Branch analysis from position: 101
Branch analysis from position: 79
2 jumps found. (Code = 43) Position 1 = 83, Position 2 = 90
Branch analysis from position: 83
Branch analysis from position: 90
Branch analysis from position: 73
2 jumps found. (Code = 43) Position 1 = 77, Position 2 = 79
Branch analysis from position: 77
Branch analysis from position: 79
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 68
Branch analysis from position: 68
Branch analysis from position: 62
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 66
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 67
Branch analysis from position: 67
2 jumps found. (Code = 43) Position 1 = 71, Position 2 = 73
Branch analysis from position: 71
Branch analysis from position: 73
Branch analysis from position: 66
2 jumps found. (Code = 43) Position 1 = 71, Position 2 = 73
Branch analysis from position: 71
Branch analysis from position: 73
Branch analysis from position: 51
2 jumps found. (Code = 43) Position 1 = 55, Position 2 = 62
Branch analysis from position: 55
Branch analysis from position: 62
Branch analysis from position: 45
2 jumps found. (Code = 43) Position 1 = 49, Position 2 = 51
Branch analysis from position: 49
Branch analysis from position: 51
Branch analysis from position: 10
2 jumps found. (Code = 43) Position 1 = 13, Position 2 = 15
Branch analysis from position: 13
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 15
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 20
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 20
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 25
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 30
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 30
2 jumps found. (Code = 43) Position 1 = 33, Position 2 = 35
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 40
Branch analysis from position: 38
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 40
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 45
Branch analysis from position: 43
Branch analysis from position: 45
filename:       /in/SGESK
function name:  permission
number of ops:  127
compiled vars:  !0 = $filename, !1 = $perms, !2 = $info
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    5     1        INIT_FCALL                                               'fileperms'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                         $3      
          4        ASSIGN                                                   !1, $3
    7     5        BW_AND                                           ~5      !1, 49152
          6        IS_EQUAL                                                 ~5, 49152
          7      > JMPZ                                                     ~6, ->10
          8    >   ASSIGN                                                   !2, 's'
          9      > JMP                                                      ->41
    8    10    >   BW_AND                                           ~8      !1, 40960
         11        IS_EQUAL                                                 ~8, 40960
         12      > JMPZ                                                     ~9, ->15
         13    >   ASSIGN                                                   !2, 'l'
         14      > JMP                                                      ->41
    9    15    >   BW_AND                                           ~11     !1, 32768
         16        IS_EQUAL                                                 ~11, 32768
         17      > JMPZ                                                     ~12, ->20
         18    >   ASSIGN                                                   !2, '-'
         19      > JMP                                                      ->41
   10    20    >   BW_AND                                           ~14     !1, 24576
         21        IS_EQUAL                                                 ~14, 24576
         22      > JMPZ                                                     ~15, ->25
         23    >   ASSIGN                                                   !2, 'b'
         24      > JMP                                                      ->41
   11    25    >   BW_AND                                           ~17     !1, 16384
         26        IS_EQUAL                                                 ~17, 16384
         27      > JMPZ                                                     ~18, ->30
         28    >   ASSIGN                                                   !2, 'd'
         29      > JMP                                                      ->41
   12    30    >   BW_AND                                           ~20     !1, 8192
         31        IS_EQUAL                                                 ~20, 8192
         32      > JMPZ                                                     ~21, ->35
         33    >   ASSIGN                                                   !2, 'c'
         34      > JMP                                                      ->41
   13    35    >   BW_AND                                           ~23     !1, 4096
         36        IS_EQUAL                                                 ~23, 4096
         37      > JMPZ                                                     ~24, ->40
         38    >   ASSIGN                                                   !2, 'p'
         39      > JMP                                                      ->41
   14    40    >   ASSIGN                                                   !2, 'u'
   17    41    >   BW_AND                                           ~27     !1, 256
         42      > JMPZ                                                     ~27, ->45
         43    >   QM_ASSIGN                                        ~28     'r'
         44      > JMP                                                      ->46
         45    >   QM_ASSIGN                                        ~28     '-'
         46    >   ASSIGN_OP                                     8          !2, ~28
   18    47        BW_AND                                           ~30     !1, 128
         48      > JMPZ                                                     ~30, ->51
         49    >   QM_ASSIGN                                        ~31     'w'
         50      > JMP                                                      ->52
         51    >   QM_ASSIGN                                        ~31     '-'
         52    >   ASSIGN_OP                                     8          !2, ~31
   19    53        BW_AND                                           ~33     !1, 64
         54      > JMPZ                                                     ~33, ->62
         55    >   BW_AND                                           ~34     !1, 2048
         56      > JMPZ                                                     ~34, ->59
         57    >   QM_ASSIGN                                        ~35     's'
         58      > JMP                                                      ->60
         59    >   QM_ASSIGN                                        ~35     'x'
         60    >   QM_ASSIGN                                        ~36     ~35
         61      > JMP                                                      ->68
         62    >   BW_AND                                           ~37     !1, 2048
         63      > JMPZ                                                     ~37, ->66
         64    >   QM_ASSIGN                                        ~38     'S'
         65      > JMP                                                      ->67
         66    >   QM_ASSIGN                                        ~38     '-'
         67    >   QM_ASSIGN                                        ~36     ~38
         68    >   ASSIGN_OP                                     8          !2, ~36
   22    69        BW_AND                                           ~40     !1, 32
         70      > JMPZ                                                     ~40, ->73
         71    >   QM_ASSIGN                                        ~41     'r'
         72      > JMP                                                      ->74
         73    >   QM_ASSIGN                                        ~41     '-'
         74    >   ASSIGN_OP                                     8          !2, ~41
   23    75        BW_AND                                           ~43     !1, 16
         76      > JMPZ                                                     ~43, ->79
         77    >   QM_ASSIGN                                        ~44     'w'
         78      > JMP                                                      ->80
         79    >   QM_ASSIGN                                        ~44     '-'
         80    >   ASSIGN_OP                                     8          !2, ~44
   24    81        BW_AND                                           ~46     !1, 8
         82      > JMPZ                                                     ~46, ->90
         83    >   BW_AND                                           ~47     !1, 1024
         84      > JMPZ                                                     ~47, ->87
         85    >   QM_ASSIGN                                        ~48     's'
         86      > JMP                                                      ->88
         87    >   QM_ASSIGN                                        ~48     'x'
         88    >   QM_ASSIGN                                        ~49     ~48
         89      > JMP                                                      ->96
         90    >   BW_AND                                           ~50     !1, 1024
         91      > JMPZ                                                     ~50, ->94
         92    >   QM_ASSIGN                                        ~51     'S'
         93      > JMP                                                      ->95
         94    >   QM_ASSIGN                                        ~51     '-'
         95    >   QM_ASSIGN                                        ~49     ~51
         96    >   ASSIGN_OP                                     8          !2, ~49
   27    97        BW_AND                                           ~53     !1, 4
         98      > JMPZ                                                     ~53, ->101
         99    >   QM_ASSIGN                                        ~54     'r'
        100      > JMP                                                      ->102
        101    >   QM_ASSIGN                                        ~54     '-'
        102    >   ASSIGN_OP                                     8          !2, ~54
   28   103        BW_AND                                           ~56     !1, 2
        104      > JMPZ                                                     ~56, ->107
        105    >   QM_ASSIGN                                        ~57     'w'
        106      > JMP                                                      ->108
        107    >   QM_ASSIGN                                        ~57     '-'
        108    >   ASSIGN_OP                                     8          !2, ~57
   29   109        BW_AND                                           ~59     !1, 1
        110      > JMPZ                                                     ~59, ->118
        111    >   BW_AND                                           ~60     !1, 512
        112      > JMPZ                                                     ~60, ->115
        113    >   QM_ASSIGN                                        ~61     't'
        114      > JMP                                                      ->116
        115    >   QM_ASSIGN                                        ~61     'x'
        116    >   QM_ASSIGN                                        ~62     ~61
        117      > JMP                                                      ->124
        118    >   BW_AND                                           ~63     !1, 512
        119      > JMPZ                                                     ~63, ->122
        120    >   QM_ASSIGN                                        ~64     'T'
        121      > JMP                                                      ->123
        122    >   QM_ASSIGN                                        ~64     '-'
        123    >   QM_ASSIGN                                        ~62     ~64
        124    >   ASSIGN_OP                                     8          !2, ~62
   31   125      > RETURN                                                   !2
   32   126*     > RETURN                                                   null

End of function permission

Function dir_list:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 7
Branch analysis from position: 6
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 13
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 13
1 jumps found. (Code = 42) Position 1 = 48
Branch analysis from position: 48
2 jumps found. (Code = 44) Position 1 = 53, Position 2 = 19
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 19
2 jumps found. (Code = 43) Position 1 = 22, Position 2 = 48
Branch analysis from position: 22
2 jumps found. (Code = 44) Position 1 = 53, Position 2 = 19
Branch analysis from position: 53
Branch analysis from position: 19
Branch analysis from position: 48
Branch analysis from position: 7
filename:       /in/SGESK
function name:  dir_list
number of ops:  55
compiled vars:  !0 = $dir, !1 = $dir_handle, !2 = $dir_objects, !3 = $object, !4 = $filename, !5 = $file_object
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   34     0  E >   RECV                                             !0      
   36     1        STRLEN                                           ~6      !0
          2        SUB                                              ~7      ~6, 1
          3        FETCH_DIM_R                                      ~8      !0, ~7
          4        IS_NOT_EQUAL                                             ~8, '%2F'
          5      > JMPZ                                                     ~9, ->7
          6    >   ASSIGN_OP                                     8          !0, '%2F'
   38     7    >   INIT_FCALL                                               'is_dir'
          8        SEND_VAR                                                 !0
          9        DO_ICALL                                         $11     
         10        BOOL_NOT                                         ~12     $11
         11      > JMPZ                                                     ~12, ->13
         12    > > RETURN                                                   <array>
   40    13    >   INIT_FCALL                                               'opendir'
         14        SEND_VAR                                                 !0
         15        DO_ICALL                                         $13     
         16        ASSIGN                                                   !1, $13
   41    17        ASSIGN                                                   !2, <array>
   42    18      > JMP                                                      ->48
   43    19    >   IN_ARRAY                                         ~16     !3, <array>
         20        BOOL_NOT                                         ~17     ~16
         21      > JMPZ                                                     ~17, ->48
   45    22    >   CONCAT                                           ~18     !0, !3
         23        ASSIGN                                                   !4, ~18
   47    24        INIT_ARRAY                                       ~20     !3, 'name'
   48    25        INIT_FCALL                                               'filesize'
         26        SEND_VAR                                                 !4
         27        DO_ICALL                                         $21     
         28        ADD_ARRAY_ELEMENT                                ~20     $21, 'size'
   49    29        INIT_FCALL                                               'permission'
         30        SEND_VAR                                                 !4
         31        DO_FCALL                                      0  $22     
         32        ADD_ARRAY_ELEMENT                                ~20     $22, 'perm'
   50    33        INIT_FCALL                                               'filetype'
         34        SEND_VAR                                                 !4
         35        DO_ICALL                                         $23     
         36        ADD_ARRAY_ELEMENT                                ~20     $23, 'type'
   51    37        INIT_FCALL                                               'date'
         38        SEND_VAL                                                 'd+F+Y+H%3Ai%3As'
         39        INIT_FCALL                                               'filemtime'
         40        SEND_VAR                                                 !4
         41        DO_ICALL                                         $24     
         42        SEND_VAR                                                 $24
         43        DO_ICALL                                         $25     
         44        ADD_ARRAY_ELEMENT                                ~20     $25, 'time'
   46    45        ASSIGN                                                   !5, ~20
   53    46        ASSIGN_DIM                                               !2
         47        OP_DATA                                                  !5
   42    48    >   INIT_FCALL                                               'readdir'
         49        SEND_VAR                                                 !1
         50        DO_ICALL                                         $28     
         51        ASSIGN                                           ~29     !3, $28
         52      > JMPNZ                                                    ~29, ->19
   56    53    > > RETURN                                                   !2
   57    54*     > RETURN                                                   null

End of function dir_list

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
162.65 ms | 1410 KiB | 33 Q