3v4l.org

run code in 300+ PHP versions simultaneously
<?php class B { public $var; protected $var2; protected $_var3; public function __construct($var) { $this->var = $var; $this->var2 = $var; $this->_var3 = $var; } } class A { public $class; public function __construct(B $class) { $this->class = $class; } } $b = new B('test'); $a = new A($b); echo $b->var."\n"; echo $b->var2."\n"; echo $b->_var3."\n"; echo $a->class->var."\n"; echo $a->class->var2."\n"; echo $a->class->_var3."\n"; echo $a->class->var."\n"; $b->var = 'test2'; echo $b->var."\n"; echo $b->var2."\n"; echo $b->_var3."\n"; echo $a->class->var."\n"; echo $a->class->var2."\n"; echo $a->class->_var3."\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9P9PX
function name:  (null)
number of ops:  57
compiled vars:  !0 = $b, !1 = $a
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   19     0  E >   NEW                                              $2      'B'
          1        SEND_VAL_EX                                              'test'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !0, $2
   20     4        NEW                                              $5      'A'
          5        SEND_VAR_EX                                              !0
          6        DO_FCALL                                      0          
          7        ASSIGN                                                   !1, $5
   23     8        FETCH_OBJ_R                                      ~8      !0, 'var'
          9        CONCAT                                           ~9      ~8, '%0A'
         10        ECHO                                                     ~9
   24    11        FETCH_OBJ_R                                      ~10     !0, 'var2'
         12        CONCAT                                           ~11     ~10, '%0A'
         13        ECHO                                                     ~11
   25    14        FETCH_OBJ_R                                      ~12     !0, '_var3'
         15        CONCAT                                           ~13     ~12, '%0A'
         16        ECHO                                                     ~13
   26    17        FETCH_OBJ_R                                      ~14     !1, 'class'
         18        FETCH_OBJ_R                                      ~15     ~14, 'var'
         19        CONCAT                                           ~16     ~15, '%0A'
         20        ECHO                                                     ~16
   27    21        FETCH_OBJ_R                                      ~17     !1, 'class'
         22        FETCH_OBJ_R                                      ~18     ~17, 'var2'
         23        CONCAT                                           ~19     ~18, '%0A'
         24        ECHO                                                     ~19
   28    25        FETCH_OBJ_R                                      ~20     !1, 'class'
         26        FETCH_OBJ_R                                      ~21     ~20, '_var3'
         27        CONCAT                                           ~22     ~21, '%0A'
         28        ECHO                                                     ~22
   30    29        FETCH_OBJ_R                                      ~23     !1, 'class'
         30        FETCH_OBJ_R                                      ~24     ~23, 'var'
         31        CONCAT                                           ~25     ~24, '%0A'
         32        ECHO                                                     ~25
   32    33        ASSIGN_OBJ                                               !0, 'var'
         34        OP_DATA                                                  'test2'
   34    35        FETCH_OBJ_R                                      ~27     !0, 'var'
         36        CONCAT                                           ~28     ~27, '%0A'
         37        ECHO                                                     ~28
   35    38        FETCH_OBJ_R                                      ~29     !0, 'var2'
         39        CONCAT                                           ~30     ~29, '%0A'
         40        ECHO                                                     ~30
   36    41        FETCH_OBJ_R                                      ~31     !0, '_var3'
         42        CONCAT                                           ~32     ~31, '%0A'
         43        ECHO                                                     ~32
   37    44        FETCH_OBJ_R                                      ~33     !1, 'class'
         45        FETCH_OBJ_R                                      ~34     ~33, 'var'
         46        CONCAT                                           ~35     ~34, '%0A'
         47        ECHO                                                     ~35
   38    48        FETCH_OBJ_R                                      ~36     !1, 'class'
         49        FETCH_OBJ_R                                      ~37     ~36, 'var2'
         50        CONCAT                                           ~38     ~37, '%0A'
         51        ECHO                                                     ~38
   39    52        FETCH_OBJ_R                                      ~39     !1, 'class'
         53        FETCH_OBJ_R                                      ~40     ~39, '_var3'
         54        CONCAT                                           ~41     ~40, '%0A'
         55        ECHO                                                     ~41
         56      > RETURN                                                   1

Class B:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9P9PX
function name:  __construct
number of ops:  8
compiled vars:  !0 = $var
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    6     0  E >   RECV                                             !0      
    7     1        ASSIGN_OBJ                                               'var'
          2        OP_DATA                                                  !0
    8     3        ASSIGN_OBJ                                               'var2'
          4        OP_DATA                                                  !0
    9     5        ASSIGN_OBJ                                               '_var3'
          6        OP_DATA                                                  !0
   10     7      > RETURN                                                   null

End of function __construct

End of class B.

Class A:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9P9PX
function name:  __construct
number of ops:  4
compiled vars:  !0 = $class
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   14     0  E >   RECV                                             !0      
   15     1        ASSIGN_OBJ                                               'class'
          2        OP_DATA                                                  !0
   16     3      > RETURN                                                   null

End of function __construct

End of class A.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
164.27 ms | 1399 KiB | 13 Q