diff --git a/src/Temperature/AbstractTemperature.php b/src/Temperature/AbstractTemperature.php new file mode 100644 index 0000000..82d6fdd --- /dev/null +++ b/src/Temperature/AbstractTemperature.php @@ -0,0 +1,87 @@ +validateQuality($quality); + + $this->quality = (float) $quality; + } + + protected function validateQuality($quality) + { + if (false === is_numeric($quality)) { + throw new \InvalidArgumentException('Quality expect to be a number'); + } + + if ($quality < static::ABSOLUTE_ZERO) { + throw new \InvalidArgumentException('Quality expect to be grater or equal 0'); + } + } + + public function isEqualTo(ValueObjectInterface $compare): bool + { + $className = static::class; + if (false === $compare instanceof $className) { + $errorMsg = 'you are able to compare only to same distanceType as ' . $className . 'use Comparator instead'; + throw new \InvalidArgumentException($errorMsg); + } + + return $compare->getQuality() == $this->getQuality(); + } + + /** + * {@inheritdoc} + */ + public function __toString(): string + { + return $this->getQuality() .'°'. $this->getUnit(); + } + + /** + * @return float + */ + public function getQuality(): float + { + return $this->quality; + } + + /** + * @return string + */ + public function getUnit(): string + { + return $this->unit; + } +} diff --git a/src/Temperature/Celsius.php b/src/Temperature/Celsius.php new file mode 100644 index 0000000..96afa63 --- /dev/null +++ b/src/Temperature/Celsius.php @@ -0,0 +1,22 @@ +unit = 'C'; + } +} diff --git a/src/Temperature/Delisie.php b/src/Temperature/Delisie.php new file mode 100644 index 0000000..88c3a1b --- /dev/null +++ b/src/Temperature/Delisie.php @@ -0,0 +1,22 @@ +unit = 'D'; + } +} diff --git a/src/Temperature/Fahrenheit.php b/src/Temperature/Fahrenheit.php new file mode 100644 index 0000000..9a4bb38 --- /dev/null +++ b/src/Temperature/Fahrenheit.php @@ -0,0 +1,22 @@ +unit = 'F'; + } +} diff --git a/src/Temperature/Kelvin.php b/src/Temperature/Kelvin.php new file mode 100644 index 0000000..5340c2b --- /dev/null +++ b/src/Temperature/Kelvin.php @@ -0,0 +1,22 @@ +unit = 'K'; + } +} diff --git a/src/Temperature/NewtonScale.php b/src/Temperature/NewtonScale.php new file mode 100644 index 0000000..f1d09b7 --- /dev/null +++ b/src/Temperature/NewtonScale.php @@ -0,0 +1,22 @@ +unit = 'N'; + } +} diff --git a/src/Temperature/Rankine.php b/src/Temperature/Rankine.php new file mode 100644 index 0000000..6a1e249 --- /dev/null +++ b/src/Temperature/Rankine.php @@ -0,0 +1,22 @@ +unit = 'R'; + } +} diff --git a/src/Temperature/Reaumur.php b/src/Temperature/Reaumur.php new file mode 100644 index 0000000..827e94e --- /dev/null +++ b/src/Temperature/Reaumur.php @@ -0,0 +1,22 @@ +unit = 'Re'; + } +} diff --git a/src/Temperature/Romer.php b/src/Temperature/Romer.php new file mode 100644 index 0000000..03f05e1 --- /dev/null +++ b/src/Temperature/Romer.php @@ -0,0 +1,22 @@ +unit = 'C'; + } +}