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'); echo 'C implements A: '.$cRef->implementsInterface('A') ? 'yes' : 'no'; echo 'D implements A: '.$dRef->implementsInterface('A') ? 'yes' : 'no'; echo 'B subclass of A: '.$bRef->isSubclassOf('A') ? 'yes' : 'no'; echo 'C subclass of A: '.$cRef->isSubclassOf('A') ? 'yes' : 'no'; echo 'D subclass of A: '.$dRef->isSubclassOf('A') ? 'yes' : 'no';
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 = 38, Position 2 = 40
Branch analysis from position: 38
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 49
Branch analysis from position: 47
1 jumps found. (Code = 42) Position 1 = 50
Branch analysis from position: 50
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 58
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 59
Branch analysis from position: 59
2 jumps found. (Code = 43) Position 1 = 65, Position 2 = 67
Branch analysis from position: 65
1 jumps found. (Code = 42) Position 1 = 68
Branch analysis from position: 68
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 67
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 58
2 jumps found. (Code = 43) Position 1 = 65, Position 2 = 67
Branch analysis from position: 65
Branch analysis from position: 67
Branch analysis from position: 49
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 58
Branch analysis from position: 56
Branch analysis from position: 58
Branch analysis from position: 40
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 49
Branch analysis from position: 47
Branch analysis from position: 49
Branch analysis from position: 31
2 jumps found. (Code = 43) Position 1 = 38, Position 2 = 40
Branch analysis from position: 38
Branch analysis from position: 40
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/8WH4I
function name:  (null)
number of ops:  70
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        ECHO                                                     ~14
   14    24        INIT_METHOD_CALL                                         !1, 'implementsInterface'
         25        SEND_VAL_EX                                              'A'
         26        DO_FCALL                                      0  $15     
         27        CONCAT                                           ~16     'C+implements+A%3A+', $15
         28      > JMPZ                                                     ~16, ->31
         29    >   QM_ASSIGN                                        ~17     'yes'
         30      > JMP                                                      ->32
         31    >   QM_ASSIGN                                        ~17     'no'
         32    >   ECHO                                                     ~17
   15    33        INIT_METHOD_CALL                                         !2, 'implementsInterface'
         34        SEND_VAL_EX                                              'A'
         35        DO_FCALL                                      0  $18     
         36        CONCAT                                           ~19     'D+implements+A%3A+', $18
         37      > JMPZ                                                     ~19, ->40
         38    >   QM_ASSIGN                                        ~20     'yes'
         39      > JMP                                                      ->41
         40    >   QM_ASSIGN                                        ~20     'no'
         41    >   ECHO                                                     ~20
   17    42        INIT_METHOD_CALL                                         !0, 'isSubclassOf'
         43        SEND_VAL_EX                                              'A'
         44        DO_FCALL                                      0  $21     
         45        CONCAT                                           ~22     'B+subclass+of+A%3A+', $21
         46      > JMPZ                                                     ~22, ->49
         47    >   QM_ASSIGN                                        ~23     'yes'
         48      > JMP                                                      ->50
         49    >   QM_ASSIGN                                        ~23     'no'
         50    >   ECHO                                                     ~23
   18    51        INIT_METHOD_CALL                                         !1, 'isSubclassOf'
         52        SEND_VAL_EX                                              'A'
         53        DO_FCALL                                      0  $24     
         54        CONCAT                                           ~25     'C+subclass+of+A%3A+', $24
         55      > JMPZ                                                     ~25, ->58
         56    >   QM_ASSIGN                                        ~26     'yes'
         57      > JMP                                                      ->59
         58    >   QM_ASSIGN                                        ~26     'no'
         59    >   ECHO                                                     ~26
   19    60        INIT_METHOD_CALL                                         !2, 'isSubclassOf'
         61        SEND_VAL_EX                                              'A'
         62        DO_FCALL                                      0  $27     
         63        CONCAT                                           ~28     'D+subclass+of+A%3A+', $27
         64      > JMPZ                                                     ~28, ->67
         65    >   QM_ASSIGN                                        ~29     'yes'
         66      > JMP                                                      ->68
         67    >   QM_ASSIGN                                        ~29     'no'
         68    >   ECHO                                                     ~29
         69      > 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:
146.39 ms | 1403 KiB | 13 Q