1. <?php
  2. /**
  3. * Wraps existing logic for response headers with default values during data migration.
  4. *
  5. * @param array $responseHeaders Existing response headers.
  6. * @param array $defaultHeaders Array of default response headers.
  7. * @return array Modified response headers with default values applied.
  8. */
  9. function applyDefaultResponseHeaders(array $responseHeaders, array $defaultHeaders): array
  10. {
  11. // Merge default headers with existing headers, prioritizing defaults.
  12. $mergedHeaders = array_merge($responseHeaders, $defaultHeaders);
  13. // Apply defaults where headers are missing or empty.
  14. $mergedHeaders = applyDefaultValues($mergedHeaders);
  15. return $mergedHeaders;
  16. }
  17. /**
  18. * Applies default values to response headers.
  19. *
  20. * @param array $headers Array of response headers.
  21. * @return array Modified response headers with default values.
  22. */
  23. function applyDefaultValues(array $headers): array
  24. {
  25. $defaults = [
  26. 'Content-Type' => 'application/json',
  27. 'Cache-Control' => 'no-cache, no-store, must-revalidate',
  28. 'Pragma' => 'no-cache',
  29. 'Expires' => '0',
  30. 'X-Migrate-Status' => 'in_progress', //Example custom header
  31. ];
  32. foreach ($defaults as $header => $defaultValue) {
  33. if (!isset($headers[$header]) || empty($headers[$header])) {
  34. $headers[$header] = $defaultValue;
  35. }
  36. }
  37. return $headers;
  38. }
  39. // Example usage (can be removed or adapted for your needs)
  40. /*
  41. $existingHeaders = [
  42. 'Content-Type' => 'application/json',
  43. 'X-Custom-Header' => 'some_value',
  44. ];
  45. $defaultHeaders = [
  46. 'Cache-Control' => 'no-cache',
  47. 'Pragma' => 'no-cache',
  48. 'X-Migrate-Status' => 'initial',
  49. ];
  50. $modifiedHeaders = applyDefaultResponseHeaders($existingHeaders, $defaultHeaders);
  51. print_r($modifiedHeaders);
  52. */
  53. ?>

Add your comment