NativeCalculator.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * League.Uri (https://uri.thephpleague.com)
  4. *
  5. * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. declare(strict_types=1);
  11. namespace League\Uri\IPv4;
  12. use function floor;
  13. use function intval;
  14. final class NativeCalculator implements Calculator
  15. {
  16. public function baseConvert(mixed $value, int $base): int
  17. {
  18. return intval((string) $value, $base);
  19. }
  20. public function pow(mixed $value, int $exponent)
  21. {
  22. return $value ** $exponent;
  23. }
  24. public function compare(mixed $value1, mixed $value2): int
  25. {
  26. return $value1 <=> $value2;
  27. }
  28. public function multiply(mixed $value1, mixed $value2): int
  29. {
  30. return $value1 * $value2;
  31. }
  32. public function div(mixed $value, mixed $base): int
  33. {
  34. return (int) floor($value / $base);
  35. }
  36. public function mod(mixed $value, mixed $base): int
  37. {
  38. return $value % $base;
  39. }
  40. public function add(mixed $value1, mixed $value2): int
  41. {
  42. return $value1 + $value2;
  43. }
  44. public function sub(mixed $value1, mixed $value2): int
  45. {
  46. return $value1 - $value2;
  47. }
  48. }