protected function sort($a, $b) { if ($this->math->eq($a, $b)) { return 0; } if ($this->math->lessThan($a, $b)) { return 1; } return -1; }
/** * @param DimensionsInterface $dimensions * @return Length */ public function calculate(DimensionsInterface $dimensions) { $dimensions = $this->dimensionsNormalizer->normalize($dimensions); $value = $this->math->sum($dimensions->getLength(), $dimensions->getWidth()); $value = $this->math->mul($value, 2); $perimeter = new Length(); $perimeter->setUnit($dimensions->getUnit()); $perimeter->setValue($value); return $perimeter; }
/** * @param Dimensions $dimensions * @return Length */ public function calculate(Dimensions $dimensions) { $dimensions = $this->dimensionsNormalizer->normalize($dimensions); $value = $dimensions->getLength(); $value = $this->math->sum($value, $this->math->mul($dimensions->getWidth(), 2)); $value = $this->math->sum($value, $this->math->mul($dimensions->getHeight(), 2)); $girth = new Length(); $girth->setUnit($dimensions->getUnit()); $girth->setValue($value); return $girth; }
/** * @param Dimensions $dimensions * @return Weight */ public function calculate(Dimensions $dimensions) { $length = $this->lengthConverter->convert($dimensions->getLength(), $dimensions->getUnit(), LengthUnits::IN); $width = $this->lengthConverter->convert($dimensions->getWidth(), $dimensions->getUnit(), LengthUnits::IN); $height = $this->lengthConverter->convert($dimensions->getHeight(), $dimensions->getUnit(), LengthUnits::IN); $volume = $this->math->mul($length, $width); $volume = $this->math->mul($volume, $height); $value = $this->math->div($volume, $this->getFactor()); $value = $this->math->roundUp($value, 3); $weight = new Weight(); $weight->setValue($value); $weight->setUnit(WeightUnits::LB); return $weight; }
/** * @param DimensionsInterface $dimensions * @return Dimensions */ public function normalize(DimensionsInterface $dimensions) { $values = [$dimensions->getLength()]; if ($this->math->greaterThan($dimensions->getWidth(), reset($values))) { array_unshift($values, $dimensions->getWidth()); } else { $values[] = $dimensions->getWidth(); } if ($this->math->greaterThan($dimensions->getHeight(), reset($values))) { array_unshift($values, $dimensions->getHeight()); } else { $values[] = $dimensions->getHeight(); } $normalized = new Dimensions(); $normalized->setUnit($dimensions->getUnit()); $normalized->setLength(reset($values)); $normalized->setWidth(next($values)); $normalized->setHeight(next($values)); return $normalized; }