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 arrGet(array $payload, int|string $key, mixed $default = null): mixed
  9. {
  10. return array_key_exists($key, $payload) ? $payload[$key] : $default;
  11. }
  12. protected static function arrInt(array $payload, string $key): ?int
  13. {
  14. if (! array_key_exists($key, $payload)) {
  15. return null;
  16. }
  17. return (int) $payload[$key];
  18. }
  19. protected static function arrString(array $payload, string $key): ?string
  20. {
  21. if (! array_key_exists($key, $payload)) {
  22. return null;
  23. }
  24. $value = $payload[$key];
  25. return $value !== null && $value !== '' ? (string) $value : null;
  26. }
  27. protected static function arrBool(array $payload, string $key): ?bool
  28. {
  29. if (! array_key_exists($key, $payload)) {
  30. return null;
  31. }
  32. $value = $payload[$key];
  33. return $value !== null && $value !== '' ? (bool) $value : null;
  34. }
  35. protected static function arrArray(array $payload, string $key): array
  36. {
  37. if (! array_key_exists($key, $payload) || ! is_array($payload[$key])) {
  38. return [];
  39. }
  40. return $payload[$key];
  41. }
  42. protected static function arrMap(array $payload, string $key, callable $fn): array
  43. {
  44. return array_map($fn, static::arrArray($payload, $key));
  45. }
  46. }