1. <?php
  2. /**
  3. * Reads user data configuration from a file.
  4. * Handles file not found and invalid format errors.
  5. *
  6. * @param string $config_file Path to the configuration file.
  7. * @return array|null An associative array containing user data configuration,
  8. * or null if an error occurred.
  9. */
  10. function readUserConfig(string $config_file): ?array
  11. {
  12. if (!file_exists($config_file)) {
  13. error_log("Error: Configuration file not found: " . $config_file);
  14. return null; // File not found
  15. }
  16. $config = [];
  17. $data = file_get_contents($config_file);
  18. if ($data === false) {
  19. error_log("Error: Failed to read configuration file: " . $config_file);
  20. return null; // Failed to read file
  21. }
  22. // Attempt to parse the configuration data (assuming it's in a valid format like JSON or YAML)
  23. $config = json_decode($data, true); // Decode as associative array
  24. if (json_last_error() !== JSON_ERROR_NONE) {
  25. error_log("Error: Invalid JSON format in configuration file: " . $config_file);
  26. return null; // Invalid JSON
  27. }
  28. // Validate required keys
  29. if (!isset($config['user_id']) || !is_numeric($config['user_id'])) {
  30. error_log("Error: Missing or invalid user_id in configuration: " . $config_file);
  31. return null; // Missing/Invalid user_id
  32. }
  33. if (!isset($config['email']) || !filter_var($config['email'], FILTER_VALIDATE_EMAIL)) {
  34. error_log("Error: Invalid email format in configuration: " . $config_file);
  35. return null; // Invalid email
  36. }
  37. if (!isset($config['age']) || !is_numeric($config['age']) || $config['age'] < 0 || $config['age'] > 120) {
  38. error_log("Error: Invalid age in configuration: " . $config_file);
  39. return null; // Invalid age
  40. }
  41. //Optional: Validate other fields as needed. Example:
  42. if (isset($config['location']) && !is_string($config['location'])) {
  43. error_log("Error: Invalid location format in configuration: " . $config_file);
  44. return null;
  45. }
  46. return $config;
  47. }
  48. // Example usage:
  49. $config_file = 'user_config.json'; // Your configuration file
  50. $user_config = readUserConfig($config_file);
  51. if ($user_config) {
  52. // Use the configuration data
  53. echo "User ID: " . $user_config['user_id'] . "\n";
  54. echo "Email: " . $user_config['email'] . "\n";
  55. echo "Age: " . $user_config['age'] . "\n";
  56. } else {
  57. echo "Failed to load user configuration.\n";
  58. }
  59. ?>

Add your comment