3v4l.org

run code in 300+ PHP versions simultaneously
<?php abstract class Base { protected $foo = null; final public function __construct(Granny $init = null) { return $this->init($init); } abstract protected function init(Granny $dependency = null); } class Granny { protected $name = null; protected $age = null; public function __construct(array $vals = null) { foreach($vals as $name => $val) { $name = 'set'.ucfirst($name); if (method_exists($this, $name)) { $this->{$name}($val); } } return $this; } //basic gettter && setters public function getAge() { return $this->age; } public function setAge($age = null) { $this->age = $age === null ? null : (int) $age; return $this; } } class Dad extends Granny { //Dad's secret private $likesMom = null; public function getLikesMom() { return $this->likesMom; } public function setLikesMom($bool = null) { $this->likesMom = $bool === null ? null : !!$bool; return $this; } } class Ball extends Base { protected function init(Dad $dependency = null) { $this->foo = $dependency; return $this; } } var_dump(new Ball());

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
5.4.170.0100.04012.41
5.4.160.0090.04312.41
5.4.150.0110.04412.40
5.4.140.0130.05212.09
5.4.130.0120.04112.08
5.4.120.0100.04312.04
5.4.110.0080.04412.03
5.4.100.0110.04212.03
5.4.90.0100.04512.03
5.4.80.0110.04312.03
5.4.70.0120.04012.03
5.4.60.0110.04312.03
5.4.50.0100.04512.03
5.4.40.0100.04712.01
5.4.30.0130.04712.01
5.4.20.0130.05612.01
5.4.10.0110.05112.01
5.4.00.0110.04511.50
5.3.270.0120.04412.72
5.3.260.0150.05112.72
5.3.250.0110.05012.72
5.3.240.0110.04512.72
5.3.230.0100.04612.71
5.3.220.0090.04712.68
5.3.210.0200.06112.68
5.3.200.0120.04412.68
5.3.190.0130.04312.68
5.3.180.0110.04212.67
5.3.170.0080.04312.67
5.3.160.0150.05612.67
5.3.150.0110.04112.67
5.3.140.0130.03912.66
5.3.130.0120.04012.66
5.3.120.0100.04212.66
5.3.110.0130.04412.66
5.3.100.0100.04112.14
5.3.90.0110.04412.12
5.3.80.0070.04512.11
5.3.70.0110.03812.12
5.3.60.0130.04212.09
5.3.50.0100.04412.04
5.3.40.0140.04112.04
5.3.30.0090.04312.00
5.3.20.0140.04611.78
5.3.10.0110.03911.75
5.3.00.0110.04411.74

preferences:
134.19 ms | 1394 KiB | 7 Q