3v4l.org

run code in 300+ PHP versions simultaneously
<?php <?php /* Raciow Framework Project * The MIT License(http://opensource.org/licenses/MIT) * Copyright 2014 Mararok(Andrzej Wasiak, mararok@gmail.com) */ namespace raciow\util; class ClassPrivateAccessor { /** @var \Closure */ private static $getter; /** @var \Closure */ private static $setter; private static $setterMany; /** @var \Closure */ private $contexGetter; /** @var \Closure */ private $contexSetter; private $contextSetterMany; public static function initAccessor() { ClassPrivateAccessor::$getter = function($fieldName) { return $this->$fieldName; }; ClassPrivateAccessor::$setter = function($fieldName, $newValue) { $this->$fieldName = $newValue; }; ClassPrivateAccessor::$setterMany = function(array $values) { foreach ($values as $field => $value) { $this->$field = $value; } }; } public function setContextForGetter($context) { $this->contexGetter = ClassPrivateAccessor::$getter->bindTo($context, $context); } public function setContextForSetter($context) { $this->contexSetter = ClassPrivateAccessor::$setter->bindTo($context, $context); } public function setContextForSetterMany($context) { $this->contextSetterMany = ClassPrivateAccessor::$setterMany->bindTo($context, $context); } public function get($fieldName) { return $this->contexGetter($fieldName); } public function set($fieldName, $newValue) { $this->contexSetter($fieldName, $newValue); } public function setMany($values) { $this->contextSetterMany($values); } } ClassPrivateAccessor::initAccessor(); $accessor = new ClassPrivateAccessor(); class Foo { private $test1; private $test2; private $test3; } $foo = new Foo(); $accessor->setSetterContext($foo); $acessor->set('test1',10);

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.310.0070.03812.49
5.4.300.0030.04012.50
5.4.290.0050.04012.50
5.4.280.0040.03712.39
5.4.270.0060.03912.39
5.4.260.0070.03912.39
5.4.250.0050.03912.39
5.4.240.0080.03512.39
5.4.230.0050.03912.38
5.4.220.0080.05012.38
5.4.210.0090.03212.38
5.4.200.0020.04112.38
5.4.190.0050.03612.38
5.4.180.0030.03912.38
5.4.170.0100.03312.39
5.4.160.0080.03612.38
5.4.150.0070.03512.38
5.4.140.0070.03612.07
5.4.130.0060.03512.05
5.4.120.0050.03612.02
5.4.110.0060.03812.01
5.4.100.0050.03512.01
5.4.90.0090.03912.01
5.4.80.0040.04112.01
5.4.70.0060.03512.00
5.4.60.0030.03712.00
5.4.50.0060.03512.01
5.4.40.0070.03312.00
5.4.30.0040.03711.99
5.4.20.0090.04411.99
5.4.10.0060.03511.99
5.4.00.0050.03711.49
5.3.280.0090.03612.71
5.3.270.0030.04212.72
5.3.260.0060.03912.72
5.3.250.0030.04012.72
5.3.240.0060.03812.72
5.3.230.0090.03612.71
5.3.220.0080.03912.68
5.3.210.0070.03812.68
5.3.200.0020.04112.68
5.3.190.0080.03512.68
5.3.180.0030.03912.68
5.3.170.0080.03812.67
5.3.160.0090.03312.67
5.3.150.0030.04012.67
5.3.140.0080.03712.66
5.3.130.0050.04012.66
5.3.120.0040.04112.66
5.3.110.0030.04212.66
5.3.100.0040.03912.12
5.3.90.0080.03912.08
5.3.80.0080.03412.08
5.3.70.0040.03712.07
5.3.60.0040.03712.06
5.3.50.0110.03012.00
5.3.40.0050.03612.00
5.3.30.0050.03611.95
5.3.20.0070.03811.73
5.3.10.0070.03711.70
5.3.00.0040.03811.68
5.2.170.0030.0329.18
5.2.160.0050.0299.18
5.2.150.0060.0299.19
5.2.140.0050.0309.18
5.2.130.0050.0299.14
5.2.120.0050.0299.14
5.2.110.0050.0299.14
5.2.100.0070.0279.14
5.2.90.0030.0319.14
5.2.80.0050.0309.14
5.2.70.0040.0329.14
5.2.60.0060.0309.09
5.2.50.0070.0299.06
5.2.40.0050.0309.04
5.2.30.0060.0299.01
5.2.20.0050.0329.00
5.2.10.0050.0328.93
5.2.00.0030.0308.79
5.1.60.0050.0288.07
5.1.50.0060.0288.06
5.1.40.0030.0308.04
5.1.30.0030.0278.39
5.1.20.0060.0248.41
5.1.10.0040.0268.15
5.1.00.0030.0278.14
5.0.50.0050.0196.62
5.0.40.0030.0196.48
5.0.30.0030.0316.29
5.0.20.0030.0256.27
5.0.10.0020.0246.24
5.0.00.0030.0306.23
4.4.90.0020.0204.78
4.4.80.0030.0194.75
4.4.70.0030.0144.75
4.4.60.0000.0174.76
4.4.50.0040.0164.77
4.4.40.0040.0294.71
4.4.30.0020.0164.76
4.4.20.0020.0164.84
4.4.10.0030.0164.85
4.4.00.0020.0254.76
4.3.110.0030.0154.67
4.3.100.0040.0204.66
4.3.90.0040.0134.63
4.3.80.0020.0274.58
4.3.70.0030.0144.63
4.3.60.0020.0154.63
4.3.50.0040.0184.63
4.3.40.0040.0344.54
4.3.30.0040.0193.29
4.3.20.0030.0173.26
4.3.10.0030.0213.22
4.3.00.0030.01715.29

preferences:
138.61 ms | 1394 KiB | 7 Q