PagarmeResponseData.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Data\Pagarme;
  3. abstract readonly class PagarmeResponseData
  4. {
  5. abstract public static function fromArray(array $payload): static;
  6. abstract public function toArray(): array;
  7. //
  8. protected static function arrArray(array $payload, string $key): array
  9. {
  10. if (! array_key_exists($key, $payload) || ! is_array($payload[$key])) {
  11. return [];
  12. }
  13. return $payload[$key];
  14. }
  15. protected static function arrBool(array $payload, string $key): ?bool
  16. {
  17. if (! array_key_exists($key, $payload)) {
  18. return null;
  19. }
  20. $value = $payload[$key];
  21. return $value !== null && $value !== '' ? (bool) $value : null;
  22. }
  23. protected static function arrGet(array $payload, int|string $key, mixed $default = null): mixed
  24. {
  25. return array_key_exists($key, $payload) ? $payload[$key] : $default;
  26. }
  27. protected static function arrInt(array $payload, string $key): ?int
  28. {
  29. if (! array_key_exists($key, $payload)) {
  30. return null;
  31. }
  32. return (int) $payload[$key];
  33. }
  34. protected static function arrMap(array $payload, string $key, callable $fn): array
  35. {
  36. return array_map($fn, static::arrArray($payload, $key));
  37. }
  38. protected static function arrString(array $payload, string $key): ?string
  39. {
  40. if (! array_key_exists($key, $payload)) {
  41. return null;
  42. }
  43. $value = $payload[$key];
  44. return $value !== null && $value !== '' ? (string) $value : null;
  45. }
  46. }