3v4l.org

run code in 300+ PHP versions simultaneously
<?php trait SetterGetter { private function getFieldNameFromMethodName(string $methodName): string { $fieldName = mb_substr($methodName, 3); $fieldNameFirstChar = mb_strtolower(mb_substr($fieldName, 0, 1)); $fieldNameLastChars = mb_substr($fieldName, 1); $fieldName = $fieldNameFirstChar . $fieldNameLastChars; return $fieldName; } private function methodAllowedToBeUsedOnProperty(string $methodName, object $object, string $fieldName): bool { $property = new ReflectionProperty(get_class($object), $fieldName); $properties = $property->getAttributes(); foreach ($properties as $property) { $methods[] = $property->getName(); } return $methods; } public function __call(string $name, array $arguments) { $prefix = mb_substr($name, 0, 3); if ($prefix !== 'get' && $prefix !== 'set') { throw new SetterGetterException('Из необъявленных методов этого класса можно вызывать только геттер и сеттер.'); } $fieldName = $this->getFieldNameFromMethodName($name); if (!property_exists(get_class($object), $fieldName)) { throw new SetterGetterException('В классе ' . get_class($object) . 'не существует свойства с именем' . $fieldName); } $methods = methodAllowedToBeUsedOnProperty($name, $this, $fieldName); if (!in_array($prefix, $methods)) { throw new SetterGetterException('К этому полю нельзя обращаться через метод ' . $prefix); } if ($prefix === 'get') { return $this->$fieldName; } elseif ($prefix === 'set') { if (count($arguments) !== 1) { throw new SetterGetterException('В сеттер можно передавать только один аргумент.'); } $fieldValue = $arguments[0]; $this->$fieldName = $fieldValue; } } }

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)
8.4.120.0050.00420.31
8.4.110.0030.00618.14
8.4.100.0150.00717.36
8.4.90.0140.00520.59
8.4.80.0060.00217.79
8.4.70.0130.00819.41
8.4.60.0120.00918.94
8.4.50.0120.00818.46
8.4.40.0080.00017.27
8.4.30.0130.00618.75
8.4.20.0160.00318.64
8.4.10.0080.00819.09
8.3.250.0100.01018.80
8.3.240.0070.00516.74
8.3.230.0050.00316.59
8.3.220.0050.00318.88
8.3.210.0120.01016.59
8.3.200.0050.00516.32
8.3.190.0070.00318.84
8.3.180.0100.00516.56
8.3.170.0120.00620.73
8.3.160.0160.00318.31
8.3.150.0040.00420.96
8.3.140.0090.00620.57
8.3.130.0060.00318.28
8.3.120.0070.01118.27
8.3.110.0030.00616.63
8.3.100.0060.00316.67
8.3.90.0040.01126.77
8.3.80.0060.00618.43
8.3.70.0100.00716.58
8.3.60.0130.00616.38
8.3.50.0100.01016.66
8.3.40.0140.00420.47
8.3.30.0100.00720.40
8.3.20.0070.01124.18
8.3.10.0080.01124.66
8.3.00.0090.00924.66
8.2.290.0150.00418.26
8.2.280.0130.00521.94
8.2.270.0130.00617.09
8.2.260.0090.00916.88
8.2.250.0060.00316.43
8.2.240.0090.00018.95
8.2.230.0110.00020.94
8.2.220.0060.00324.06
8.2.210.0140.00726.77
8.2.200.0090.00016.50
8.2.190.0140.00416.58
8.2.180.0110.00425.92
8.2.170.0120.00922.96
8.2.160.0150.00622.96
8.2.150.0000.00825.66
8.2.140.0100.01024.66
8.2.130.0150.00424.66
8.2.120.0120.00624.66
8.2.110.0070.01124.66
8.2.100.0100.01024.66
8.2.90.0070.01324.66
8.2.80.0100.00624.66
8.2.70.0120.00324.66
8.2.60.0100.01024.66
8.2.50.0120.00624.66
8.2.40.0060.00924.66
8.2.30.0060.01024.66
8.2.20.0120.00424.66
8.2.10.0170.00324.66
8.2.00.0100.01024.66
8.1.330.0090.00918.50
8.1.320.0080.01116.13
8.1.310.0120.00316.66
8.1.300.0050.00517.72
8.1.290.0060.00330.84
8.1.280.0110.00725.92
8.1.270.0110.00724.66
8.1.260.0120.00624.66
8.1.250.0150.00424.66
8.1.240.0090.00924.66
8.1.230.0130.00624.66
8.1.220.0170.00324.66
8.1.210.0160.00324.66
8.1.200.0110.00724.66
8.1.190.0090.00624.66
8.1.180.0040.00724.66
8.1.170.0080.00424.66
8.1.160.0040.00824.66
8.1.150.0080.00324.66
8.1.140.0030.00624.66
8.1.130.0040.00424.66
8.1.120.0060.00324.66
8.1.110.0000.00924.66
8.1.100.0050.00324.66
8.1.90.0050.00324.66
8.1.80.0030.00524.66
8.1.70.0000.00824.66
8.1.60.0040.00424.66
8.1.50.0060.00324.66
8.1.40.0050.00524.66
8.1.30.0030.00624.66
8.1.20.0030.00624.66
8.1.10.0080.00024.66
8.1.00.0030.00524.66

preferences:
27.56 ms | 403 KiB | 5 Q