3v4l.org

run code in 300+ PHP versions simultaneously
<?php if($a = opendir(".")){ while($b = readdir($a)){ sort($b); if(is_file($b)){ if(is_writable($b)){ echo "File ".$b." is writable\n"; } else { echo "File ".$b." is not writable\n"; } } elseif(is_dir($b)){ if(is_writable($b)){ echo "DIR ".$b." is writable\n"; } else { echo "DIR ".$b." is not writable\n"; } } } } else { echo "Can't opendir()"; } ?>
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 46
Branch analysis from position: 5
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
2 jumps found. (Code = 44) Position 1 = 45, Position 2 = 6
Branch analysis from position: 45
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
2 jumps found. (Code = 43) Position 1 = 13, Position 2 = 25
Branch analysis from position: 13
2 jumps found. (Code = 43) Position 1 = 17, Position 2 = 21
Branch analysis from position: 17
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 21
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 40
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 33, Position 2 = 37
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 37
2 jumps found. (Code = 44) Position 1 = 45, Position 2 = 6
Branch analysis from position: 45
Branch analysis from position: 6
Branch analysis from position: 40
Branch analysis from position: 46
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Nkr8S
function name:  (null)
number of ops:  48
compiled vars:  !0 = $a, !1 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   INIT_FCALL                                               'opendir'
          1        SEND_VAL                                                 '.'
          2        DO_ICALL                                         $2      
          3        ASSIGN                                           ~3      !0, $2
          4      > JMPZ                                                     ~3, ->46
    3     5    > > JMP                                                      ->40
    4     6    >   INIT_FCALL                                               'sort'
          7        SEND_REF                                                 !1
          8        DO_ICALL                                                 
    5     9        INIT_FCALL                                               'is_file'
         10        SEND_VAR                                                 !1
         11        DO_ICALL                                         $5      
         12      > JMPZ                                                     $5, ->25
    6    13    >   INIT_FCALL                                               'is_writable'
         14        SEND_VAR                                                 !1
         15        DO_ICALL                                         $6      
         16      > JMPZ                                                     $6, ->21
    7    17    >   CONCAT                                           ~7      'File+', !1
         18        CONCAT                                           ~8      ~7, '+is+writable%0A'
         19        ECHO                                                     ~8
         20      > JMP                                                      ->24
    9    21    >   CONCAT                                           ~9      'File+', !1
         22        CONCAT                                           ~10     ~9, '+is+not+writable%0A'
         23        ECHO                                                     ~10
         24    > > JMP                                                      ->40
   11    25    >   INIT_FCALL                                               'is_dir'
         26        SEND_VAR                                                 !1
         27        DO_ICALL                                         $11     
         28      > JMPZ                                                     $11, ->40
   12    29    >   INIT_FCALL                                               'is_writable'
         30        SEND_VAR                                                 !1
         31        DO_ICALL                                         $12     
         32      > JMPZ                                                     $12, ->37
   13    33    >   CONCAT                                           ~13     'DIR+', !1
         34        CONCAT                                           ~14     ~13, '+is+writable%0A'
         35        ECHO                                                     ~14
         36      > JMP                                                      ->40
   15    37    >   CONCAT                                           ~15     'DIR+', !1
         38        CONCAT                                           ~16     ~15, '+is+not+writable%0A'
         39        ECHO                                                     ~16
    3    40    >   INIT_FCALL                                               'readdir'
         41        SEND_VAR                                                 !0
         42        DO_ICALL                                         $17     
         43        ASSIGN                                           ~18     !1, $17
         44      > JMPNZ                                                    ~18, ->6
         45    > > JMP                                                      ->47
   20    46    >   ECHO                                                     'Can%27t+opendir%28%29'
   22    47    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
151.92 ms | 1400 KiB | 25 Q