From d392a62e765fe6aad8c1a2470a1ca17eba517a0d Mon Sep 17 00:00:00 2001 From: pradzikowski Date: Sun, 26 Mar 2017 13:24:50 +0200 Subject: [PATCH 1/4] Introducing Temperature ValueObjects --- src/Temperature/AbstractTemperature.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/Temperature/AbstractTemperature.php diff --git a/src/Temperature/AbstractTemperature.php b/src/Temperature/AbstractTemperature.php new file mode 100644 index 0000000..cca4215 --- /dev/null +++ b/src/Temperature/AbstractTemperature.php @@ -0,0 +1,12 @@ + Date: Sun, 26 Mar 2017 22:33:22 +0200 Subject: [PATCH 2/4] Create whole temperature scales. --- src/Temperature/AbstractTemperature.php | 75 +++++++++++++++++++++++++ src/Temperature/Celsius.php | 22 ++++++++ src/Temperature/Delisie.php | 22 ++++++++ src/Temperature/Fahrenheit.php | 22 ++++++++ src/Temperature/Kelvin.php | 22 ++++++++ src/Temperature/NewtonScale.php | 22 ++++++++ src/Temperature/Rankine.php | 22 ++++++++ src/Temperature/Reaumur.php | 22 ++++++++ src/Temperature/Romer.php | 22 ++++++++ 9 files changed, 251 insertions(+) create mode 100644 src/Temperature/Celsius.php create mode 100644 src/Temperature/Delisie.php create mode 100644 src/Temperature/Fahrenheit.php create mode 100644 src/Temperature/Kelvin.php create mode 100644 src/Temperature/NewtonScale.php create mode 100644 src/Temperature/Rankine.php create mode 100644 src/Temperature/Reaumur.php create mode 100644 src/Temperature/Romer.php diff --git a/src/Temperature/AbstractTemperature.php b/src/Temperature/AbstractTemperature.php index cca4215..82d6fdd 100644 --- a/src/Temperature/AbstractTemperature.php +++ b/src/Temperature/AbstractTemperature.php @@ -8,5 +8,80 @@ abstract class AbstractTemperature implements ValueObjectInterface { + public const ABSOLUTE_ZERO = null; + /** + * power of object + * + * @var float + */ + protected $quality; + + /** + * unit type of object + * + * @var string + */ + protected $unit; + + /** + * AbstractDistance constructor. + * @param float $quality + */ + public function __construct($quality) + { + if (null === (float) static::ABSOLUTE_ZERO) { + throw new \UnexpectedValueException('Constant Absolute Zero not set'); + } + + $this->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..e90b1e1 --- /dev/null +++ b/src/Temperature/Fahrenheit.php @@ -0,0 +1,22 @@ +unit = 'F'; + } +} \ No newline at end of file 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..3431cf7 --- /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'; + } +} From 5bdbd290f7ccc5cf12c1db3b3db4e597dbc88d34 Mon Sep 17 00:00:00 2001 From: pradzikowski Date: Sun, 26 Mar 2017 22:34:06 +0200 Subject: [PATCH 3/4] Rename NewtonScale to simples name --- src/Temperature/NewtonScale.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Temperature/NewtonScale.php b/src/Temperature/NewtonScale.php index 3431cf7..f1d09b7 100644 --- a/src/Temperature/NewtonScale.php +++ b/src/Temperature/NewtonScale.php @@ -4,7 +4,7 @@ namespace PCF\ValueObject\Temperature; -class NewtonScale extends AbstractTemperature +class Newton extends AbstractTemperature { public const ABSOLUTE_ZERO = '-90.14'; From 38402796648bf9d30355ae733705b474a084cbfa Mon Sep 17 00:00:00 2001 From: pradzikowski Date: Sun, 26 Mar 2017 22:36:36 +0200 Subject: [PATCH 4/4] Psr fix --- src/Temperature/Fahrenheit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Temperature/Fahrenheit.php b/src/Temperature/Fahrenheit.php index e90b1e1..9a4bb38 100644 --- a/src/Temperature/Fahrenheit.php +++ b/src/Temperature/Fahrenheit.php @@ -19,4 +19,4 @@ public function __construct($quality) $this->unit = 'F'; } -} \ No newline at end of file +}