<?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 git.master, git.master_jit, rfc.property-hooks
- 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
This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.
Active branches
Archived branches
Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page
preferences:
28.16 ms | 405 KiB | 5 Q