3v4l.org

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

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

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
151.24 ms | 1399 KiB | 13 Q