3v4l.org

run code in 500+ 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.5.0


preferences:
159.47 ms | 1358 KiB | 14 Q