3v4l.org

run code in 300+ PHP versions simultaneously
<?php class MyEntity { const STATE_NEW = 'new'; const STATE_IN_PROGRESS = 'in_progress'; const STATE_COMPLETE = 'complete'; const CONFIG_STATES = array( self::STATE_NEW, self::STATE_IN_PROGRESS, self::STATE_COMPLETE ); /** * @var \DateTime|null * @ORM\Column(type="datetime", nullable=true) */ private $dateStarted; /** * @var string|null * @ORM\Column(type="string", nullable=true) */ private $state = self::STATE_NEW; /** * @var string|null $state */ public function setState($state = null) { $this->validateState($state); $this->updateStateDate($state); $this->state = $state; return $this; } public function getState() { return $this->state; } public function getDateStarted() { return $this->dateStarted; } /** * used to update the started date when the state changes to in_progress * @var string $state */ protected function updateStateDate($state) { if ($this->state !== $state && $state === self::STATE_IN_PROGRESS && $this->dateStarted === null) { $this->dateStarted = new \DateTime(); } return $this; } protected function validateState($state) { if (!in_array($state, self::CONFIG_STATES, true)) { throw new \InvalidArgumentException( sprintf('Unknown state "%s". Expected one of: "%s"', $state, implode('", "', self::CONFIG_STATES) ) ); } if ($this->state === self::STATE_NEW && $state !== self::STATE_IN_PROGRESS) { throw new \InvalidArgumentException( sprintf('Invalid state "%s" specified, Expected: %s', $state, self::STATE_IN_PROGRESS ) ); } return $this; } } $entity = new \MyEntity; var_dump($entity); echo \PHP_EOL . '----' . \PHP_EOL; echo 'set State as in progress and set the initial date'. \PHP_EOL; $entity->setState(MyEntity::STATE_IN_PROGRESS); var_dump($entity); echo \PHP_EOL . '----' . \PHP_EOL; echo 'set State as complete and leave date unchanged'. \PHP_EOL; $entity->setState(MyEntity::STATE_COMPLETE); var_dump($entity); echo \PHP_EOL . '----' . \PHP_EOL; echo 'change the state back to in progress and leave the date unchanged'. \PHP_EOL; $entity->setState(MyEntity::STATE_IN_PROGRESS); var_dump($entity); echo \PHP_EOL . '----' . \PHP_EOL; echo 'use an invalid state string'. \PHP_EOL; $entity->setState('Wrong State');

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.3.70.0060.00917.13
8.3.60.0040.01218.55
8.3.50.0040.01118.44
8.3.40.0110.00718.96
8.3.30.0000.01518.97
8.3.20.0030.00619.27
8.3.10.0080.00023.53
8.3.00.0080.00023.60
8.2.190.0130.00916.75
8.2.180.0070.01017.13
8.2.170.0160.00622.96
8.2.160.0070.00719.38
8.2.150.0080.00025.66
8.2.140.0070.00024.66
8.2.130.0050.00326.16
8.2.120.0060.00320.83
8.2.110.0000.00920.47
8.2.100.0100.00318.02
8.2.90.0040.00418.05
8.2.80.0050.00317.97
8.2.70.0050.00318.05
8.2.60.0000.00818.16
8.2.50.0080.00018.10
8.2.40.0000.00820.56
8.2.30.0030.00619.37
8.2.20.0000.00718.07
8.2.10.0000.00818.25
8.2.00.0000.00719.47
8.1.280.0120.00625.92
8.1.270.0080.00020.46
8.1.260.0080.00026.35
8.1.250.0080.00028.09
8.1.240.0090.00022.21
8.1.230.0070.00419.34
8.1.220.0000.00817.91
8.1.210.0030.00618.77
8.1.200.0080.00017.73
8.1.190.0030.00617.60
8.1.180.0030.00618.10
8.1.170.0030.00618.82
8.1.160.0040.00418.89
8.1.150.0000.00818.89
8.1.140.0000.00719.05
8.1.130.0000.00917.61
8.1.120.0030.00617.78
8.1.110.0060.00617.63
8.1.100.0090.00017.72
8.1.90.0000.00917.75
8.1.80.0040.00417.73
8.1.70.0000.00717.71
8.1.60.0040.00417.67
8.1.50.0040.00417.71
8.1.40.0090.00017.73
8.1.30.0030.00617.81
8.1.20.0090.00017.75
8.1.10.0080.00017.72
8.1.00.0030.00617.65
8.0.300.0050.00321.71
8.0.290.0040.00416.88
8.0.280.0000.00718.57
8.0.270.0000.00717.31
8.0.260.0040.00417.15
8.0.250.0070.00017.21
8.0.240.0040.00417.34
8.0.230.0070.00017.30
8.0.220.0020.00517.20
8.0.210.0050.00217.22
8.0.200.0030.00317.29
8.0.190.0070.00317.21
8.0.180.0050.00317.24
8.0.170.0030.00617.13
8.0.160.0040.00417.19
8.0.150.0060.00317.11
8.0.140.0000.00717.20
8.0.130.0060.00313.53
8.0.120.0040.00417.18
8.0.110.0050.00317.18
8.0.100.0000.00817.11
8.0.90.0030.00517.08
8.0.80.0100.01117.20
8.0.70.0080.00017.08
8.0.60.0050.00217.11
8.0.50.0030.00617.28
8.0.30.0120.00717.34
8.0.20.0090.01017.40
8.0.10.0080.00017.33
8.0.00.0100.00916.96
7.4.330.0030.00315.55
7.4.320.0030.00316.69
7.4.300.0000.00816.80
7.4.290.0000.00716.82
7.4.280.0040.00416.72
7.4.270.0060.00316.78
7.4.260.0000.00916.64
7.4.250.0070.00016.67
7.4.240.0050.00216.84
7.4.230.0030.00316.90
7.4.220.0000.00816.51
7.4.210.0060.01016.82
7.4.200.0000.00716.70
7.4.160.0100.00916.67
7.4.140.0090.01217.86
7.4.130.0100.01016.55
7.4.120.0100.01516.77
7.4.110.0140.00316.86
7.4.100.0120.00916.84
7.4.90.0100.01016.79
7.4.80.0050.01419.39
7.4.70.0070.01016.77
7.4.60.0100.01016.80
7.4.50.0090.00916.85
7.4.40.0070.01116.76
7.4.00.0040.01415.32
7.3.330.0030.00313.46
7.3.320.0000.00613.38
7.3.310.0000.00716.43
7.3.300.0070.00016.53
7.3.290.0030.00316.62
7.3.280.0090.00816.60
7.3.260.0100.00916.79
7.3.240.0120.01016.79
7.3.230.0150.00516.69
7.3.210.0060.01316.66
7.3.200.0130.00616.64
7.3.190.0110.00616.81
7.3.180.0080.01016.80
7.3.170.0130.01316.76
7.3.160.0070.01016.80
7.2.330.0150.00617.07
7.2.320.0090.00916.86
7.2.310.0080.01216.87
7.2.300.0080.01116.94
7.2.290.0070.01417.05
7.2.80.0590.00314.63
7.2.70.0560.01015.25
7.2.60.0320.01015.24
7.2.50.0270.01215.21
7.2.40.2740.01015.27
7.2.30.0380.00715.32
7.2.20.0380.01015.17
7.2.10.0420.00715.00
7.2.00.0420.00915.25
7.1.200.0090.00615.80
7.1.190.0490.00314.24
7.1.180.0420.00314.07
7.1.170.0380.00314.18
7.1.160.0340.00314.21
7.1.150.0320.00714.05
7.1.140.0520.02214.07
7.1.130.0550.01413.98
7.1.120.0340.00714.32
7.1.110.0440.01214.12
7.1.100.0460.00613.92
7.1.90.0360.00414.06
7.1.80.0280.01313.96
7.1.70.0420.00014.04
7.1.60.0860.01231.83
7.1.50.0900.01432.10
7.1.40.0610.01232.10
7.1.30.0510.01532.00
7.1.20.0480.01731.88
7.1.10.0640.00413.95
7.1.00.0410.00314.12

preferences:
19.86 ms | 404 KiB | 6 Q