3v4l.org

run code in 500+ PHP versions simultaneously
<?php class Base { public static $prop; } class Child extends Base { } // both values are A $expected = 'A'; Base::$prop = $expected; echo "Should be $expected and is " . Base::$prop . "\n"; echo "Should be $expected and is " . Child::$prop . "\n"; echo "\n"; // VALUES DIFFER $expected = 'B'; $property = new ReflectionProperty('Base', 'prop'); $property->setValue($expected); echo "Should be $expected and is " . Base::$prop . "\n"; echo "Should be $expected and is " . Child::$prop . "\n"; echo "\n"; // VALUES STILL DIFFER $expected = 'C'; Base::$prop = $expected; echo "Should be $expected and is " . Base::$prop . "\n"; echo "Should be $expected and is " . Child::$prop . "\n"; echo "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/T43Sh
function name:  (null)
number of ops:  61
compiled vars:  !0 = $expected, !1 = $property
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   13     0  E >   ASSIGN                                                       !0, 'A'
   14     1        ASSIGN_STATIC_PROP                                           'prop', 'Base'
          2        OP_DATA                                                      !0
   16     3        ROPE_INIT                                         3  ~5      'Should+be+'
          4        ROPE_ADD                                          1  ~5      ~5, !0
          5        ROPE_END                                          2  ~4      ~5, '+and+is+'
          6        FETCH_STATIC_PROP_R              unknown             ~7      'prop'
          7        CONCAT                                               ~8      ~4, ~7
          8        CONCAT                                               ~9      ~8, '%0A'
          9        ECHO                                                         ~9
   17    10        ROPE_INIT                                         3  ~11     'Should+be+'
         11        ROPE_ADD                                          1  ~11     ~11, !0
         12        ROPE_END                                          2  ~10     ~11, '+and+is+'
         13        FETCH_STATIC_PROP_R              unknown             ~13     'prop'
         14        CONCAT                                               ~14     ~10, ~13
         15        CONCAT                                               ~15     ~14, '%0A'
         16        ECHO                                                         ~15
   18    17        ECHO                                                         '%0A'
   22    18        ASSIGN                                                       !0, 'B'
   23    19        NEW                                                  $17     'ReflectionProperty'
         20        SEND_VAL_EX                                                  'Base'
         21        SEND_VAL_EX                                                  'prop'
         22        DO_FCALL                                          0          
         23        ASSIGN                                                       !1, $17
   24    24        INIT_METHOD_CALL                                             !1, 'setValue'
         25        SEND_VAR_EX                                                  !0
         26        DO_FCALL                                          0          
   26    27        ROPE_INIT                                         3  ~22     'Should+be+'
         28        ROPE_ADD                                          1  ~22     ~22, !0
         29        ROPE_END                                          2  ~21     ~22, '+and+is+'
         30        FETCH_STATIC_PROP_R              unknown             ~24     'prop'
         31        CONCAT                                               ~25     ~21, ~24
         32        CONCAT                                               ~26     ~25, '%0A'
         33        ECHO                                                         ~26
   27    34        ROPE_INIT                                         3  ~28     'Should+be+'
         35        ROPE_ADD                                          1  ~28     ~28, !0
         36        ROPE_END                                          2  ~27     ~28, '+and+is+'
         37        FETCH_STATIC_PROP_R              unknown             ~30     'prop'
         38        CONCAT                                               ~31     ~27, ~30
         39        CONCAT                                               ~32     ~31, '%0A'
         40        ECHO                                                         ~32
   28    41        ECHO                                                         '%0A'
   32    42        ASSIGN                                                       !0, 'C'
   33    43        ASSIGN_STATIC_PROP                                           'prop', 'Base'
         44        OP_DATA                                                      !0
   35    45        ROPE_INIT                                         3  ~36     'Should+be+'
         46        ROPE_ADD                                          1  ~36     ~36, !0
         47        ROPE_END                                          2  ~35     ~36, '+and+is+'
         48        FETCH_STATIC_PROP_R              unknown             ~38     'prop'
         49        CONCAT                                               ~39     ~35, ~38
         50        CONCAT                                               ~40     ~39, '%0A'
         51        ECHO                                                         ~40
   36    52        ROPE_INIT                                         3  ~42     'Should+be+'
         53        ROPE_ADD                                          1  ~42     ~42, !0
         54        ROPE_END                                          2  ~41     ~42, '+and+is+'
         55        FETCH_STATIC_PROP_R              unknown             ~44     'prop'
         56        CONCAT                                               ~45     ~41, ~44
         57        CONCAT                                               ~46     ~45, '%0A'
         58        ECHO                                                         ~46
   37    59        ECHO                                                         '%0A'
         60      > RETURN                                                       1

Class Base: [no user functions]
Class Child: [no user functions]

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
216.91 ms | 2945 KiB | 13 Q