<?php
/**
* Reads user data configuration from a file.
* Handles file not found and invalid format errors.
*
* @param string $config_file Path to the configuration file.
* @return array|null An associative array containing user data configuration,
* or null if an error occurred.
*/
function readUserConfig(string $config_file): ?array
{
if (!file_exists($config_file)) {
error_log("Error: Configuration file not found: " . $config_file);
return null; // File not found
}
$config = [];
$data = file_get_contents($config_file);
if ($data === false) {
error_log("Error: Failed to read configuration file: " . $config_file);
return null; // Failed to read file
}
// Attempt to parse the configuration data (assuming it's in a valid format like JSON or YAML)
$config = json_decode($data, true); // Decode as associative array
if (json_last_error() !== JSON_ERROR_NONE) {
error_log("Error: Invalid JSON format in configuration file: " . $config_file);
return null; // Invalid JSON
}
// Validate required keys
if (!isset($config['user_id']) || !is_numeric($config['user_id'])) {
error_log("Error: Missing or invalid user_id in configuration: " . $config_file);
return null; // Missing/Invalid user_id
}
if (!isset($config['email']) || !filter_var($config['email'], FILTER_VALIDATE_EMAIL)) {
error_log("Error: Invalid email format in configuration: " . $config_file);
return null; // Invalid email
}
if (!isset($config['age']) || !is_numeric($config['age']) || $config['age'] < 0 || $config['age'] > 120) {
error_log("Error: Invalid age in configuration: " . $config_file);
return null; // Invalid age
}
//Optional: Validate other fields as needed. Example:
if (isset($config['location']) && !is_string($config['location'])) {
error_log("Error: Invalid location format in configuration: " . $config_file);
return null;
}
return $config;
}
// Example usage:
$config_file = 'user_config.json'; // Your configuration file
$user_config = readUserConfig($config_file);
if ($user_config) {
// Use the configuration data
echo "User ID: " . $user_config['user_id'] . "\n";
echo "Email: " . $user_config['email'] . "\n";
echo "Age: " . $user_config['age'] . "\n";
} else {
echo "Failed to load user configuration.\n";
}
?>
Add your comment