3v4l.org

run code in 300+ PHP versions simultaneously
<?php enum WeekDay: string { case Monday = 'monday'; case Tuesday = 'tuesday'; case Wednesday = 'wednesday'; case Thursday = 'thursday'; case Friday = 'friday'; case Saturday = 'saturday'; case Sunday = 'sunday'; } class Bar {} class Foo { public function hello() { return "Hello world" . PHP_EOL; } } $mondayKey = WeekDay::Monday; echo "== WEAKMAP WITH ENUM ==" . PHP_EOL; $map = new WeakMap(); $map[$mondayKey] = new Foo(); // etc echo "Dumping the Map with an ENUM" . PHP_EOL; var_dump($map); echo "unsetting reference to ENUM's object" . PHP_EOL; unset($mondayKey); echo "Dumping the Map with an ENUM" . PHP_EOL; var_dump($map); echo "IT'STILL THERE !" . PHP_EOL; echo PHP_EOL . PHP_EOL; echo "== WEAKMAP WITH OBJECT ==" . PHP_EOL; $map = new WeakMap(); $objKey = new Bar(); $map[$objKey] = new Foo(); echo "Dumping the Map with an OBJECT" . PHP_EOL; var_dump($map); echo "unsetting the OBJECT" . PHP_EOL; unset($objKey); echo "Dumping the Map with an OBJECT" . PHP_EOL; var_dump($map); echo "IT'S GONE !" . PHP_EOL; echo PHP_EOL . PHP_EOL; $tuesdayKey = WeekDay::Tuesday; $otherTuesdayKey = WeekDay::Tuesday; echo "== SPLOBJECTSTORAGE WITH ENUM ==" . PHP_EOL; $objStore = new SplObjectStorage(); $objStore[$tuesdayKey] = new Foo(); echo "Dumping the SPLOBJECTSTORAGE with an ENUM" . PHP_EOL; var_dump($objStore); echo "unsetting the ENUM" . PHP_EOL; unset($tuesdayKey); echo "Dumping the SPLOBJECTSTORAGE with an ENUM" . PHP_EOL; var_dump($objStore); echo "IT'STILL THERE !" . PHP_EOL; echo PHP_EOL . PHP_EOL; echo "== SPLOBJECTSTORAGE WITH OBJECT ==" . PHP_EOL; $objStore = new SplObjectStorage(); $objKey = new Bar(); $objStore[$objKey] = new Bar(); echo "Dumping the SPLOBJECTSTORAGE with an OBJECT" . PHP_EOL; var_dump($objStore); echo "unsetting the OBJECT" . PHP_EOL; unset($tuesdayKey); echo "Dumping the SPLOBJECTSTORAGE with an OBJECT" . PHP_EOL; var_dump($objStore); echo "IT'STILL THERE !" . PHP_EOL;
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/tpnsc
function name:  (null)
number of ops:  93
compiled vars:  !0 = $mondayKey, !1 = $map, !2 = $objKey, !3 = $tuesdayKey, !4 = $otherTuesdayKey, !5 = $objStore
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   DECLARE_CLASS                                            'weekday'
   25     1        FETCH_CLASS_CONSTANT                             ~6      'WeekDay', 'Monday'
          2        ASSIGN                                                   !0, ~6
   27     3        ECHO                                                     '%3D%3D+WEAKMAP+WITH+ENUM+%3D%3D%0A'
   28     4        NEW                                              $8      'WeakMap'
          5        DO_FCALL                                      0          
          6        ASSIGN                                                   !1, $8
   29     7        NEW                                              $12     'Foo'
          8        DO_FCALL                                      0          
          9        ASSIGN_DIM                                               !1, !0
         10        OP_DATA                                                  $12
   32    11        ECHO                                                     'Dumping+the+Map+with+an+ENUM%0A'
   33    12        INIT_FCALL                                               'var_dump'
         13        SEND_VAR                                                 !1
         14        DO_ICALL                                                 
   35    15        ECHO                                                     'unsetting+reference+to+ENUM%27s+object%0A'
   36    16        UNSET_CV                                                 !0
   38    17        ECHO                                                     'Dumping+the+Map+with+an+ENUM%0A'
   39    18        INIT_FCALL                                               'var_dump'
         19        SEND_VAR                                                 !1
         20        DO_ICALL                                                 
   40    21        ECHO                                                     'IT%27STILL+THERE+%21%0A'
   42    22        ECHO                                                     '%0A%0A'
   44    23        ECHO                                                     '%3D%3D+WEAKMAP+WITH+OBJECT+%3D%3D%0A'
   45    24        NEW                                              $16     'WeakMap'
         25        DO_FCALL                                      0          
         26        ASSIGN                                                   !1, $16
   46    27        NEW                                              $19     'Bar'
         28        DO_FCALL                                      0          
         29        ASSIGN                                                   !2, $19
   48    30        NEW                                              $23     'Foo'
         31        DO_FCALL                                      0          
         32        ASSIGN_DIM                                               !1, !2
         33        OP_DATA                                                  $23
   49    34        ECHO                                                     'Dumping+the+Map+with+an+OBJECT%0A'
   50    35        INIT_FCALL                                               'var_dump'
         36        SEND_VAR                                                 !1
         37        DO_ICALL                                                 
   52    38        ECHO                                                     'unsetting+the+OBJECT%0A'
   53    39        UNSET_CV                                                 !2
   55    40        ECHO                                                     'Dumping+the+Map+with+an+OBJECT%0A'
   56    41        INIT_FCALL                                               'var_dump'
         42        SEND_VAR                                                 !1
         43        DO_ICALL                                                 
   58    44        ECHO                                                     'IT%27S+GONE+%21%0A'
   60    45        ECHO                                                     '%0A%0A'
   63    46        FETCH_CLASS_CONSTANT                             ~27     'WeekDay', 'Tuesday'
         47        ASSIGN                                                   !3, ~27
   64    48        FETCH_CLASS_CONSTANT                             ~29     'WeekDay', 'Tuesday'
         49        ASSIGN                                                   !4, ~29
   66    50        ECHO                                                     '%3D%3D+SPLOBJECTSTORAGE+WITH+ENUM+%3D%3D%0A'
   68    51        NEW                                              $31     'SplObjectStorage'
         52        DO_FCALL                                      0          
         53        ASSIGN                                                   !5, $31
   69    54        NEW                                              $35     'Foo'
         55        DO_FCALL                                      0          
         56        ASSIGN_DIM                                               !5, !3
         57        OP_DATA                                                  $35
   71    58        ECHO                                                     'Dumping+the+SPLOBJECTSTORAGE+with+an+ENUM%0A'
   72    59        INIT_FCALL                                               'var_dump'
         60        SEND_VAR                                                 !5
         61        DO_ICALL                                                 
   74    62        ECHO                                                     'unsetting+the+ENUM%0A'
   75    63        UNSET_CV                                                 !3
   77    64        ECHO                                                     'Dumping+the+SPLOBJECTSTORAGE+with+an+ENUM%0A'
   78    65        INIT_FCALL                                               'var_dump'
         66        SEND_VAR                                                 !5
         67        DO_ICALL                                                 
   80    68        ECHO                                                     'IT%27STILL+THERE+%21%0A'
   82    69        ECHO                                                     '%0A%0A'
   84    70        ECHO                                                     '%3D%3D+SPLOBJECTSTORAGE+WITH+OBJECT+%3D%3D%0A'
   87    71        NEW                                              $39     'SplObjectStorage'
         72        DO_FCALL                                      0          
         73        ASSIGN                                                   !5, $39
   88    74        NEW                                              $42     'Bar'
         75        DO_FCALL                                      0          
         76        ASSIGN                                                   !2, $42
   90    77        NEW                                              $46     'Bar'
         78        DO_FCALL                                      0          
         79        ASSIGN_DIM                                               !5, !2
         80        OP_DATA                                                  $46
   92    81        ECHO                                                     'Dumping+the+SPLOBJECTSTORAGE+with+an+OBJECT%0A'
   93    82        INIT_FCALL                                               'var_dump'
         83        SEND_VAR                                                 !5
         84        DO_ICALL                                                 
   95    85        ECHO                                                     'unsetting+the+OBJECT%0A'
   96    86        UNSET_CV                                                 !3
   98    87        ECHO                                                     'Dumping+the+SPLOBJECTSTORAGE+with+an+OBJECT%0A'
   99    88        INIT_FCALL                                               'var_dump'
         89        SEND_VAR                                                 !5
         90        DO_ICALL                                                 
  100    91        ECHO                                                     'IT%27STILL+THERE+%21%0A'
  101    92      > RETURN                                                   1

Class WeekDay: [no user functions]
Class Bar: [no user functions]
Class Foo:
Function hello:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/tpnsc
function name:  hello
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E > > RETURN                                                   'Hello+world%0A'
   22     1*     > RETURN                                                   null

End of function hello

End of class Foo.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
144.35 ms | 1019 KiB | 14 Q