3v4l.org

run code in 300+ PHP versions simultaneously
<?php // This stands in for stdClass for this demo, because class_alias doesn't work with built-in classes class myStdClass{} class UserDefinedClass{} class_alias('myStdClass', 'DynamicObject'); $ud_obj = new UserDefinedClass(); $do_obj = new DynamicObject(); $sc_obj = new myStdClass(); echo "===[get_class()]===\n"; printf( "UserDefinedClass Object Class: %s\n", get_class($ud_obj)); printf( "DynamicObject Object Class: %s\n", get_class($do_obj)); printf( "myStdClass Object Class: %s\n", get_class($sc_obj)); echo "\n===[gettype()]===\n"; printf( "UserDefinedClass Object Type: %s\n", gettype($ud_obj)); printf( "DynamicObject Object Type: %s\n", gettype($do_obj)); printf( "myStdClass Object Type: %s\n", gettype($sc_obj)); echo "\n===[is_a(stdClass::class)]===\n"; printf( "UserDefinedClass Object Type: %s\n", is_a($ud_obj,stdClass::class)); printf( "DynamicObject Object Type: %s\n", is_a($do_obj,stdClass::class)); printf( "myStdClass Object Type: %s\n", is_a($sc_obj,stdClass::class)); echo "\n===[instanceof stdClass]===\n"; printf( "UserDefinedClass Object Type: %s\n", $ud_obj instanceof stdClass); printf( "DynamicObject Object Type: %s\n", $do_obj instanceof stdClass); printf( "myStdClass Object Type: %s\n", $sc_obj instanceof stdClass); echo "\n===[is_a(DynamicObject::class)]===\n"; printf( "UserDefinedClass Object Type: %s\n", is_a($ud_obj,DynamicObject::class)); printf( "DynamicObject Object Type: %s\n", is_a($do_obj,DynamicObject::class)); printf( "myStdClass Object Type: %s\n", is_a($sc_obj,DynamicObject::class)); echo "\n===[instanceof DynamicObject]===\n"; printf( "UserDefinedClass Object Type: %s\n", $ud_obj instanceof DynamicObject); printf( "DynamicObject Object Type: %s\n", $do_obj instanceof DynamicObject); printf( "myStdClass Object Type: %s\n", $sc_obj instanceof DynamicObject); echo "\n===[is_subclass_of(stdClass::class)]===\n"; printf( "UserDefinedClass Object Type: %s\n", is_subclass_of($ud_obj,stdClass::class)); printf( "DynamicObject Object Type: %s\n", is_subclass_of($do_obj,stdClass::class)); printf( "myStdClass Object Type: %s\n", is_subclass_of($sc_obj,stdClass::class));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/a4EI0
function name:  (null)
number of ops:  153
compiled vars:  !0 = $ud_obj, !1 = $do_obj, !2 = $sc_obj
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    7     0  E >   INIT_FCALL                                               'class_alias'
          1        SEND_VAL                                                 'myStdClass'
          2        SEND_VAL                                                 'DynamicObject'
          3        DO_ICALL                                                 
   10     4        NEW                                              $4      'UserDefinedClass'
          5        DO_FCALL                                      0          
          6        ASSIGN                                                   !0, $4
   11     7        NEW                                              $7      'DynamicObject'
          8        DO_FCALL                                      0          
          9        ASSIGN                                                   !1, $7
   12    10        NEW                                              $10     'myStdClass'
         11        DO_FCALL                                      0          
         12        ASSIGN                                                   !2, $10
   14    13        ECHO                                                     '%3D%3D%3D%5Bget_class%28%29%5D%3D%3D%3D%0A'
   15    14        INIT_FCALL                                               'printf'
         15        SEND_VAL                                                 'UserDefinedClass+Object+Class%3A+%25s%0A'
         16        GET_CLASS                                        ~13     !0
         17        SEND_VAL                                                 ~13
         18        DO_ICALL                                                 
   16    19        INIT_FCALL                                               'printf'
         20        SEND_VAL                                                 'DynamicObject+Object+Class%3A++++%25s%0A'
         21        GET_CLASS                                        ~15     !1
         22        SEND_VAL                                                 ~15
         23        DO_ICALL                                                 
   17    24        INIT_FCALL                                               'printf'
         25        SEND_VAL                                                 'myStdClass+Object+Class%3A+++++++++%25s%0A'
         26        GET_CLASS                                        ~17     !2
         27        SEND_VAL                                                 ~17
         28        DO_ICALL                                                 
   19    29        ECHO                                                     '%0A%3D%3D%3D%5Bgettype%28%29%5D%3D%3D%3D%0A'
   20    30        INIT_FCALL                                               'printf'
         31        SEND_VAL                                                 'UserDefinedClass+Object+Type%3A++%25s%0A'
         32        GET_TYPE                                         ~19     !0
         33        SEND_VAL                                                 ~19
         34        DO_ICALL                                                 
   21    35        INIT_FCALL                                               'printf'
         36        SEND_VAL                                                 'DynamicObject+Object+Type%3A+++++%25s%0A'
         37        GET_TYPE                                         ~21     !1
         38        SEND_VAL                                                 ~21
         39        DO_ICALL                                                 
   22    40        INIT_FCALL                                               'printf'
         41        SEND_VAL                                                 'myStdClass+Object+Type%3A++++++++++%25s%0A'
         42        GET_TYPE                                         ~23     !2
         43        SEND_VAL                                                 ~23
         44        DO_ICALL                                                 
   25    45        ECHO                                                     '%0A%3D%3D%3D%5Bis_a%28stdClass%3A%3Aclass%29%5D%3D%3D%3D%0A'
   26    46        INIT_FCALL                                               'printf'
         47        SEND_VAL                                                 'UserDefinedClass+Object+Type%3A++%25s%0A'
         48        INIT_FCALL                                               'is_a'
         49        SEND_VAR                                                 !0
         50        SEND_VAL                                                 'stdClass'
         51        DO_ICALL                                         $25     
         52        SEND_VAR                                                 $25
         53        DO_ICALL                                                 
   27    54        INIT_FCALL                                               'printf'
         55        SEND_VAL                                                 'DynamicObject+Object+Type%3A+++++%25s%0A'
         56        INIT_FCALL                                               'is_a'
         57        SEND_VAR                                                 !1
         58        SEND_VAL                                                 'stdClass'
         59        DO_ICALL                                         $27     
         60        SEND_VAR                                                 $27
         61        DO_ICALL                                                 
   28    62        INIT_FCALL                                               'printf'
         63        SEND_VAL                                                 'myStdClass+Object+Type%3A++++++++++%25s%0A'
         64        INIT_FCALL                                               'is_a'
         65        SEND_VAR                                                 !2
         66        SEND_VAL                                                 'stdClass'
         67        DO_ICALL                                         $29     
         68        SEND_VAR                                                 $29
         69        DO_ICALL                                                 
   31    70        ECHO                                                     '%0A%3D%3D%3D%5Binstanceof+stdClass%5D%3D%3D%3D%0A'
   32    71        INIT_FCALL                                               'printf'
         72        SEND_VAL                                                 'UserDefinedClass+Object+Type%3A++%25s%0A'
         73        INSTANCEOF                                       ~31     !0, 'stdClass'
         74        SEND_VAL                                                 ~31
         75        DO_ICALL                                                 
   33    76        INIT_FCALL                                               'printf'
         77        SEND_VAL                                                 'DynamicObject+Object+Type%3A+++++%25s%0A'
         78        INSTANCEOF                                       ~33     !1, 'stdClass'
         79        SEND_VAL                                                 ~33
         80        DO_ICALL                                                 
   34    81        INIT_FCALL                                               'printf'
         82        SEND_VAL                                                 'myStdClass+Object+Type%3A++++++++++%25s%0A'
         83        INSTANCEOF                                       ~35     !2, 'stdClass'
         84        SEND_VAL                                                 ~35
         85        DO_ICALL                                                 
   36    86        ECHO                                                     '%0A%3D%3D%3D%5Bis_a%28DynamicObject%3A%3Aclass%29%5D%3D%3D%3D%0A'
   37    87        INIT_FCALL                                               'printf'
         88        SEND_VAL                                                 'UserDefinedClass+Object+Type%3A++%25s%0A'
         89        INIT_FCALL                                               'is_a'
         90        SEND_VAR                                                 !0
         91        SEND_VAL                                                 'DynamicObject'
         92        DO_ICALL                                         $37     
         93        SEND_VAR                                                 $37
         94        DO_ICALL                                                 
   38    95        INIT_FCALL                                               'printf'
         96        SEND_VAL                                                 'DynamicObject+Object+Type%3A+++++%25s%0A'
         97        INIT_FCALL                                               'is_a'
         98        SEND_VAR                                                 !1
         99        SEND_VAL                                                 'DynamicObject'
        100        DO_ICALL                                         $39     
        101        SEND_VAR                                                 $39
        102        DO_ICALL                                                 
   39   103        INIT_FCALL                                               'printf'
        104        SEND_VAL                                                 'myStdClass+Object+Type%3A++++++++++%25s%0A'
        105        INIT_FCALL                                               'is_a'
        106        SEND_VAR                                                 !2
        107        SEND_VAL                                                 'DynamicObject'
        108        DO_ICALL                                         $41     
        109        SEND_VAR                                                 $41
        110        DO_ICALL                                                 
   41   111        ECHO                                                     '%0A%3D%3D%3D%5Binstanceof+DynamicObject%5D%3D%3D%3D%0A'
   42   112        INIT_FCALL                                               'printf'
        113        SEND_VAL                                                 'UserDefinedClass+Object+Type%3A++%25s%0A'
        114        INSTANCEOF                                       ~43     !0, 'DynamicObject'
        115        SEND_VAL                                                 ~43
        116        DO_ICALL                                                 
   43   117        INIT_FCALL                                               'printf'
        118        SEND_VAL                                                 'DynamicObject+Object+Type%3A+++++%25s%0A'
        119        INSTANCEOF                                       ~45     !1, 'DynamicObject'
        120        SEND_VAL                                                 ~45
        121        DO_ICALL                                                 
   44   122        INIT_FCALL                                               'printf'
        123        SEND_VAL                                                 'myStdClass+Object+Type%3A++++++++++%25s%0A'
        124        INSTANCEOF                                       ~47     !2, 'DynamicObject'
        125        SEND_VAL                                                 ~47
        126        DO_ICALL                                                 
   47   127        ECHO                                                     '%0A%3D%3D%3D%5Bis_subclass_of%28stdClass%3A%3Aclass%29%5D%3D%3D%3D%0A'
   48   128        INIT_FCALL                                               'printf'
        129        SEND_VAL                                                 'UserDefinedClass+Object+Type%3A++%25s%0A'
        130        INIT_FCALL                                               'is_subclass_of'
        131        SEND_VAR                                                 !0
        132        SEND_VAL                                                 'stdClass'
        133        DO_ICALL                                         $49     
        134        SEND_VAR                                                 $49
        135        DO_ICALL                                                 
   49   136        INIT_FCALL                                               'printf'
        137        SEND_VAL                                                 'DynamicObject+Object+Type%3A+++++%25s%0A'
        138        INIT_FCALL                                               'is_subclass_of'
        139        SEND_VAR                                                 !1
        140        SEND_VAL                                                 'stdClass'
        141        DO_ICALL                                         $51     
        142        SEND_VAR                                                 $51
        143        DO_ICALL                                                 
   50   144        INIT_FCALL                                               'printf'
        145        SEND_VAL                                                 'myStdClass+Object+Type%3A++++++++++%25s%0A'
        146        INIT_FCALL                                               'is_subclass_of'
        147        SEND_VAR                                                 !2
        148        SEND_VAL                                                 'stdClass'
        149        DO_ICALL                                         $53     
        150        SEND_VAR                                                 $53
        151        DO_ICALL                                                 
        152      > RETURN                                                   1

Class myStdClass: [no user functions]
Class UserDefinedClass: [no user functions]

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
174.24 ms | 1408 KiB | 21 Q