3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface A {} class B implements A {} class C extends B {} class D extends B implements A {} $bRef = new ReflectionClass('B'); $cRef = new ReflectionClass('C'); $dRef = new ReflectionClass('D'); echo 'B implements A: '.($bRef->implementsInterface('A') ? 'yes' : 'no').PHP_EOL; echo 'C implements A: '.($cRef->implementsInterface('A') ? 'yes' : 'no').PHP_EOL; echo 'D implements A: '.($dRef->implementsInterface('A') ? 'yes' : 'no').PHP_EOL; echo 'B subclass of A: '.($bRef->isSubclassOf('A') ? 'yes' : 'no').PHP_EOL; echo 'C subclass of A: '.($cRef->isSubclassOf('A') ? 'yes' : 'no').PHP_EOL; echo 'D subclass of A: '.($dRef->isSubclassOf('A') ? 'yes' : 'no').PHP_EOL;
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 19, Position 2 = 21
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 31
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 39, Position 2 = 41
Branch analysis from position: 39
1 jumps found. (Code = 42) Position 1 = 42
Branch analysis from position: 42
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 = 59, Position 2 = 61
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 62
Branch analysis from position: 62
2 jumps found. (Code = 43) Position 1 = 69, Position 2 = 71
Branch analysis from position: 69
1 jumps found. (Code = 42) Position 1 = 72
Branch analysis from position: 72
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 71
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 61
2 jumps found. (Code = 43) Position 1 = 69, Position 2 = 71
Branch analysis from position: 69
Branch analysis from position: 71
Branch analysis from position: 51
2 jumps found. (Code = 43) Position 1 = 59, Position 2 = 61
Branch analysis from position: 59
Branch analysis from position: 61
Branch analysis from position: 41
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: 31
2 jumps found. (Code = 43) Position 1 = 39, Position 2 = 41
Branch analysis from position: 39
Branch analysis from position: 41
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 31
Branch analysis from position: 29
Branch analysis from position: 31
filename:       /in/7NebX
function name:  (null)
number of ops:  76
compiled vars:  !0 = $bRef, !1 = $cRef, !2 = $dRef
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   DECLARE_CLASS                                            'b'
    6     1        DECLARE_CLASS                                            'c', 'b'
    7     2        DECLARE_CLASS                                            'd', 'b'
    9     3        NEW                                              $3      'ReflectionClass'
          4        SEND_VAL_EX                                              'B'
          5        DO_FCALL                                      0          
          6        ASSIGN                                                   !0, $3
   10     7        NEW                                              $6      'ReflectionClass'
          8        SEND_VAL_EX                                              'C'
          9        DO_FCALL                                      0          
         10        ASSIGN                                                   !1, $6
   11    11        NEW                                              $9      'ReflectionClass'
         12        SEND_VAL_EX                                              'D'
         13        DO_FCALL                                      0          
         14        ASSIGN                                                   !2, $9
   13    15        INIT_METHOD_CALL                                         !0, 'implementsInterface'
         16        SEND_VAL_EX                                              'A'
         17        DO_FCALL                                      0  $12     
         18      > JMPZ                                                     $12, ->21
         19    >   QM_ASSIGN                                        ~13     'yes'
         20      > JMP                                                      ->22
         21    >   QM_ASSIGN                                        ~13     'no'
         22    >   CONCAT                                           ~14     'B+implements+A%3A+', ~13
         23        CONCAT                                           ~15     ~14, '%0A'
         24        ECHO                                                     ~15
   14    25        INIT_METHOD_CALL                                         !1, 'implementsInterface'
         26        SEND_VAL_EX                                              'A'
         27        DO_FCALL                                      0  $16     
         28      > JMPZ                                                     $16, ->31
         29    >   QM_ASSIGN                                        ~17     'yes'
         30      > JMP                                                      ->32
         31    >   QM_ASSIGN                                        ~17     'no'
         32    >   CONCAT                                           ~18     'C+implements+A%3A+', ~17
         33        CONCAT                                           ~19     ~18, '%0A'
         34        ECHO                                                     ~19
   15    35        INIT_METHOD_CALL                                         !2, 'implementsInterface'
         36        SEND_VAL_EX                                              'A'
         37        DO_FCALL                                      0  $20     
         38      > JMPZ                                                     $20, ->41
         39    >   QM_ASSIGN                                        ~21     'yes'
         40      > JMP                                                      ->42
         41    >   QM_ASSIGN                                        ~21     'no'
         42    >   CONCAT                                           ~22     'D+implements+A%3A+', ~21
         43        CONCAT                                           ~23     ~22, '%0A'
         44        ECHO                                                     ~23
   17    45        INIT_METHOD_CALL                                         !0, 'isSubclassOf'
         46        SEND_VAL_EX                                              'A'
         47        DO_FCALL                                      0  $24     
         48      > JMPZ                                                     $24, ->51
         49    >   QM_ASSIGN                                        ~25     'yes'
         50      > JMP                                                      ->52
         51    >   QM_ASSIGN                                        ~25     'no'
         52    >   CONCAT                                           ~26     'B+subclass+of+A%3A+', ~25
         53        CONCAT                                           ~27     ~26, '%0A'
         54        ECHO                                                     ~27
   18    55        INIT_METHOD_CALL                                         !1, 'isSubclassOf'
         56        SEND_VAL_EX                                              'A'
         57        DO_FCALL                                      0  $28     
         58      > JMPZ                                                     $28, ->61
         59    >   QM_ASSIGN                                        ~29     'yes'
         60      > JMP                                                      ->62
         61    >   QM_ASSIGN                                        ~29     'no'
         62    >   CONCAT                                           ~30     'C+subclass+of+A%3A+', ~29
         63        CONCAT                                           ~31     ~30, '%0A'
         64        ECHO                                                     ~31
   19    65        INIT_METHOD_CALL                                         !2, 'isSubclassOf'
         66        SEND_VAL_EX                                              'A'
         67        DO_FCALL                                      0  $32     
         68      > JMPZ                                                     $32, ->71
         69    >   QM_ASSIGN                                        ~33     'yes'
         70      > JMP                                                      ->72
         71    >   QM_ASSIGN                                        ~33     'no'
         72    >   CONCAT                                           ~34     'D+subclass+of+A%3A+', ~33
         73        CONCAT                                           ~35     ~34, '%0A'
         74        ECHO                                                     ~35
         75      > RETURN                                                   1

Class A: [no user functions]
Class B: [no user functions]
Class C: [no user functions]
Class D: [no user functions]

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
137.16 ms | 1403 KiB | 13 Q