3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Distance { public const UNIT_KILOMETERS = 'kilometers'; public const UNIT_MILES = 'miles'; private const KILOMETERS_IN_1MILE = 1.609344; private float $distance = 0.0; private string $unit = self::UNIT_KILOMETERS; public function __construct(float $distance, string $unit = self::UNIT_KILOMETERS) { $this->set_distance($distance, $unit); } public function set_distance($distance, string $unit = ''): object { if (empty($unit)) { $unit = $this->unit; } if (!in_array($unit, [self::UNIT_KILOMETERS, self::UNIT_MILES])) { throw new Exception("Invalid Unit [$unit]"); } $this->distance = $distance; $this->unit = $unit; return $this; } public function get_distance(string $unit = ''): float { if (empty($unit)) { $unit = $this->unit; } if ($unit == $this->unit) { return $this->distance; } switch ($unit) { case self::UNIT_KILOMETERS: return $this->distance * self::KILOMETERS_IN_1MILE; case self::UNIT_MILES: return $this->distance / self::KILOMETERS_IN_1MILE; default: throw new Exception("Invalid Unit [$unit]"); } return 0.0; } public function distance_format(string $unit = '', int $decimal_point = 2, string $decimal_separator = '.', $thousands_separator = ','): string { return number_format($this->get_distance($unit), $decimal_point, $decimal_separator, $thousands_separator) . " " . $unit; } } $distance = new Distance(10.0, Distance::UNIT_KILOMETERS); echo $distance->get_distance() . PHP_EOL; echo $distance->get_distance(Distance::UNIT_KILOMETERS) . PHP_EOL; echo $distance->get_distance(Distance::UNIT_MILES) . PHP_EOL; echo $distance->distance_format() . PHP_EOL; echo $distance->distance_format(Distance::UNIT_KILOMETERS) . PHP_EOL; echo $distance->distance_format(Distance::UNIT_MILES) . PHP_EOL; $distance->set_distance(25); echo $distance->get_distance() . PHP_EOL; echo $distance->get_distance(Distance::UNIT_KILOMETERS) . PHP_EOL; echo $distance->get_distance(Distance::UNIT_MILES) . PHP_EOL; echo $distance->distance_format() . PHP_EOL; echo $distance->distance_format(Distance::UNIT_KILOMETERS) . PHP_EOL; echo $distance->distance_format(Distance::UNIT_MILES) . PHP_EOL; $distance->set_distance(10, Distance::UNIT_MILES); echo $distance->get_distance() . PHP_EOL; echo $distance->get_distance(Distance::UNIT_KILOMETERS) . PHP_EOL; echo $distance->get_distance(Distance::UNIT_MILES) . PHP_EOL; echo $distance->distance_format() . PHP_EOL; echo $distance->distance_format(Distance::UNIT_KILOMETERS) . PHP_EOL; echo $distance->distance_format(Distance::UNIT_MILES) . PHP_EOL;
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
10 10 6.2137119223733 10.00 10.00 kilometers 6.21 miles 25 25 15.534279805933 25.00 25.00 kilometers 15.53 miles 10 16.09344 10 10.00 16.09 kilometers 10.00 miles

preferences:
97.41 ms | 407 KiB | 5 Q