3v4l.org

run code in 300+ PHP versions simultaneously
<?php $psr4 = array( 'my\\first\\ns\\prefix\\' => 0, 'my\\second\\ns\\prefix\\' => 0, 'my\\third\\ns\prefix' => 0, ); foreach ($psr4 as $prefix => &$v) { $v = strlen($prefix); } $classes = array( 'my\\third\\ns\\prefix\\subns\\class', 'another\\ns\\prefix\\subns\\class', ); foreach ($classes as $class) { foreach ($psr4 as $prefix => $length) { if (0 === strpos($class, $prefix)) { echo "$class -> $prefix\n"; break; } } } echo "-----------------------------\n"; foreach ($classes as $class) { foreach ($psr4 as $prefix => $length) { if (strncmp($class, $prefix, $length)) { echo "$class -> $prefix\n"; break; } } }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 125) Position 1 = 2, Position 2 = 7
Branch analysis from position: 2
2 jumps found. (Code = 126) Position 1 = 3, Position 2 = 7
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 2
Branch analysis from position: 2
Branch analysis from position: 7
2 jumps found. (Code = 77) Position 1 = 10, Position 2 = 29
Branch analysis from position: 10
2 jumps found. (Code = 78) Position 1 = 11, Position 2 = 29
Branch analysis from position: 11
2 jumps found. (Code = 77) Position 1 = 12, Position 2 = 27
Branch analysis from position: 12
2 jumps found. (Code = 78) Position 1 = 13, Position 2 = 27
Branch analysis from position: 13
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 26
Branch analysis from position: 20
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 10
Branch analysis from position: 10
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
Branch analysis from position: 27
Branch analysis from position: 27
Branch analysis from position: 29
2 jumps found. (Code = 77) Position 1 = 32, Position 2 = 51
Branch analysis from position: 32
2 jumps found. (Code = 78) Position 1 = 33, Position 2 = 51
Branch analysis from position: 33
2 jumps found. (Code = 77) Position 1 = 34, Position 2 = 49
Branch analysis from position: 34
2 jumps found. (Code = 78) Position 1 = 35, Position 2 = 49
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 48
Branch analysis from position: 42
1 jumps found. (Code = 42) Position 1 = 49
Branch analysis from position: 49
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
Branch analysis from position: 48
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 49
Branch analysis from position: 49
Branch analysis from position: 51
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 51
Branch analysis from position: 29
Branch analysis from position: 7
filename:       /in/R1559
function name:  (null)
number of ops:  53
compiled vars:  !0 = $psr4, !1 = $v, !2 = $prefix, !3 = $classes, !4 = $class, !5 = $length
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
    8     1      > FE_RESET_RW                                      $7      !0, ->7
          2    > > FE_FETCH_RW                                      ~8      $7, !1, ->7
          3    >   ASSIGN                                                   !2, ~8
    9     4        STRLEN                                           ~10     !2
          5        ASSIGN                                                   !1, ~10
    8     6      > JMP                                                      ->2
          7    >   FE_FREE                                                  $7
   12     8        ASSIGN                                                   !3, <array>
   17     9      > FE_RESET_R                                       $13     !3, ->29
         10    > > FE_FETCH_R                                               $13, !4, ->29
   18    11    > > FE_RESET_R                                       $14     !0, ->27
         12    > > FE_FETCH_R                                       ~15     $14, !5, ->27
         13    >   ASSIGN                                                   !2, ~15
   19    14        INIT_FCALL                                               'strpos'
         15        SEND_VAR                                                 !4
         16        SEND_VAR                                                 !2
         17        DO_ICALL                                         $17     
         18        IS_IDENTICAL                                             $17, 0
         19      > JMPZ                                                     ~18, ->26
   20    20    >   ROPE_INIT                                     4  ~20     !4
         21        ROPE_ADD                                      1  ~20     ~20, '+-%3E+'
         22        ROPE_ADD                                      2  ~20     ~20, !2
         23        ROPE_END                                      3  ~19     ~20, '%0A'
         24        ECHO                                                     ~19
   21    25      > JMP                                                      ->27
   18    26    > > JMP                                                      ->12
         27    >   FE_FREE                                                  $14
   17    28      > JMP                                                      ->10
         29    >   FE_FREE                                                  $13
   26    30        ECHO                                                     '-----------------------------%0A'
   28    31      > FE_RESET_R                                       $22     !3, ->51
         32    > > FE_FETCH_R                                               $22, !4, ->51
   29    33    > > FE_RESET_R                                       $23     !0, ->49
         34    > > FE_FETCH_R                                       ~24     $23, !5, ->49
         35    >   ASSIGN                                                   !2, ~24
   30    36        INIT_FCALL                                               'strncmp'
         37        SEND_VAR                                                 !4
         38        SEND_VAR                                                 !2
         39        SEND_VAR                                                 !5
         40        DO_ICALL                                         $26     
         41      > JMPZ                                                     $26, ->48
   31    42    >   ROPE_INIT                                     4  ~28     !4
         43        ROPE_ADD                                      1  ~28     ~28, '+-%3E+'
         44        ROPE_ADD                                      2  ~28     ~28, !2
         45        ROPE_END                                      3  ~27     ~28, '%0A'
         46        ECHO                                                     ~27
   32    47      > JMP                                                      ->49
   29    48    > > JMP                                                      ->34
         49    >   FE_FREE                                                  $23
   28    50      > JMP                                                      ->32
         51    >   FE_FREE                                                  $22
   35    52      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
164.71 ms | 1400 KiB | 17 Q