3v4l.org

run code in 300+ PHP versions simultaneously
<?php class A { var $__row = null; function A($row) { $this->__row = $row; } } class B extends A { var $__module_id; function B($row, $module_id) { parent::A($row); $this->__module_id = $module_id; } } class C extends B { function C($row) { parent::B($row, 'common'); } } class D extends C { function D($row) { parent::B($row, 'something'); // ATTENTION - Here is "::B" not "::C" } } $d = new D('dummy'); var_dump($d);
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
object(D)#1 (2) { ["__row"]=> NULL ["__module_id"]=> NULL }
Output for 8.0.0 - 8.0.30
object(D)#1 (2) { ["__module_id"]=> NULL ["__row"]=> NULL }
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.31, 7.4.0 - 7.4.33
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; A has a deprecated constructor in /in/dfkg3 on line 3 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; B has a deprecated constructor in /in/dfkg3 on line 10 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; C has a deprecated constructor in /in/dfkg3 on line 19 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; D has a deprecated constructor in /in/dfkg3 on line 25 object(D)#1 (2) { ["__module_id"]=> string(9) "something" ["__row"]=> string(5) "dummy" }
Output for 5.5.0 - 5.5.35, 5.6.0 - 5.6.28, 7.3.32 - 7.3.33
object(D)#1 (2) { ["__module_id"]=> string(9) "something" ["__row"]=> string(5) "dummy" }

preferences:
146.68 ms | 402 KiB | 214 Q