3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); enum Foo: int { case Bar = 1; } var_dump(is_subclass_of(Foo::class, \IntBackedEnum::class)); var_dump(is_subclass_of(Foo::class, \StringBackedEnum::class)); var_dump((new ReflectionEnum(Foo::class))->getBackingType()->getName()); enum Bar: string { case Foo = 'foo'; } var_dump(is_subclass_of(Bar::class, \IntBackedEnum::class)); var_dump(is_subclass_of(Bar::class, \StringBackedEnum::class)); var_dump((new ReflectionEnum(Bar::class))->getBackingType()->getName()); enum Foobar { case Foobar; } var_dump(is_subclass_of(Foobar::class, \IntBackedEnum::class)); var_dump(is_subclass_of(Foobar::class, \StringBackedEnum::class)); var_dump((new ReflectionEnum(Foobar::class))->getBackingType()->getName());
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fButY
function name:  (null)
number of ops:  76
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   DECLARE_CLASS                                            'foo'
   10     1        INIT_FCALL                                               'var_dump'
          2        INIT_FCALL                                               'is_subclass_of'
          3        SEND_VAL                                                 'Foo'
          4        SEND_VAL                                                 'IntBackedEnum'
          5        DO_ICALL                                         $0      
          6        SEND_VAR                                                 $0
          7        DO_ICALL                                                 
   11     8        INIT_FCALL                                               'var_dump'
          9        INIT_FCALL                                               'is_subclass_of'
         10        SEND_VAL                                                 'Foo'
         11        SEND_VAL                                                 'StringBackedEnum'
         12        DO_ICALL                                         $2      
         13        SEND_VAR                                                 $2
         14        DO_ICALL                                                 
   12    15        INIT_FCALL                                               'var_dump'
         16        NEW                                              $4      'ReflectionEnum'
         17        SEND_VAL_EX                                              'Foo'
         18        DO_FCALL                                      0          
         19        INIT_METHOD_CALL                                         $4, 'getBackingType'
         20        DO_FCALL                                      0  $6      
         21        INIT_METHOD_CALL                                         $6, 'getName'
         22        DO_FCALL                                      0  $7      
         23        SEND_VAR                                                 $7
         24        DO_ICALL                                                 
   15    25        DECLARE_CLASS                                            'bar'
   20    26        INIT_FCALL                                               'var_dump'
         27        INIT_FCALL                                               'is_subclass_of'
         28        SEND_VAL                                                 'Bar'
         29        SEND_VAL                                                 'IntBackedEnum'
         30        DO_ICALL                                         $9      
         31        SEND_VAR                                                 $9
         32        DO_ICALL                                                 
   21    33        INIT_FCALL                                               'var_dump'
         34        INIT_FCALL                                               'is_subclass_of'
         35        SEND_VAL                                                 'Bar'
         36        SEND_VAL                                                 'StringBackedEnum'
         37        DO_ICALL                                         $11     
         38        SEND_VAR                                                 $11
         39        DO_ICALL                                                 
   22    40        INIT_FCALL                                               'var_dump'
         41        NEW                                              $13     'ReflectionEnum'
         42        SEND_VAL_EX                                              'Bar'
         43        DO_FCALL                                      0          
         44        INIT_METHOD_CALL                                         $13, 'getBackingType'
         45        DO_FCALL                                      0  $15     
         46        INIT_METHOD_CALL                                         $15, 'getName'
         47        DO_FCALL                                      0  $16     
         48        SEND_VAR                                                 $16
         49        DO_ICALL                                                 
   25    50        DECLARE_CLASS                                            'foobar'
   30    51        INIT_FCALL                                               'var_dump'
         52        INIT_FCALL                                               'is_subclass_of'
         53        SEND_VAL                                                 'Foobar'
         54        SEND_VAL                                                 'IntBackedEnum'
         55        DO_ICALL                                         $18     
         56        SEND_VAR                                                 $18
         57        DO_ICALL                                                 
   31    58        INIT_FCALL                                               'var_dump'
         59        INIT_FCALL                                               'is_subclass_of'
         60        SEND_VAL                                                 'Foobar'
         61        SEND_VAL                                                 'StringBackedEnum'
         62        DO_ICALL                                         $20     
         63        SEND_VAR                                                 $20
         64        DO_ICALL                                                 
   32    65        INIT_FCALL                                               'var_dump'
         66        NEW                                              $22     'ReflectionEnum'
         67        SEND_VAL_EX                                              'Foobar'
         68        DO_FCALL                                      0          
         69        INIT_METHOD_CALL                                         $22, 'getBackingType'
         70        DO_FCALL                                      0  $24     
         71        INIT_METHOD_CALL                                         $24, 'getName'
         72        DO_FCALL                                      0  $25     
         73        SEND_VAR                                                 $25
         74        DO_ICALL                                                 
         75      > RETURN                                                   1

Class Foo: [no user functions]
Class Bar: [no user functions]
Class Foobar: [no user functions]

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
145.96 ms | 1016 KiB | 15 Q