<?php
/**
* Validates environment variables for hypothesis validation, allowing manual overrides.
*
* @param array $expectedVariables An array of expected environment variable names and their expected values.
* @param array $manualOverrides An array of manually overridden environment variable names and their values.
* @return bool True if all validated environment variables are valid, false otherwise.
*/
function validateEnvironmentVariables(array $expectedVariables, array $manualOverrides = []): bool
{
foreach ($expectedVariables as $variableName => $expectedValue) {
// Get the environment variable value, using the manual override if available.
$value = getenv($variableName);
//If no environment variable exists, we'll skip this validation.
if ($value === null) {
continue;
}
// Apply manual override if present.
if (isset($manualOverrides[$variableName])) {
$value = $manualOverrides[$variableName];
}
// Check if the environment variable value matches the expected value.
if ($value !== $expectedValue) {
error_log("Environment variable '$variableName' is invalid. Expected: '$expectedValue', Actual: '$value'");
return false; // Validation failed.
}
}
return true; // All validation checks passed.
}
// Example Usage
/*
$expectedVars = [
'API_KEY' => 'your_api_key',
'DATABASE_URL' => 'mysql://user:password@host:port/database',
'DEBUG_MODE' => 'true',
];
$manualOverrides = [
'DEBUG_MODE' => 'false', // Example of manual override
];
if (validateEnvironmentVariables($expectedVars, $manualOverrides)) {
echo "Environment variables are valid.\n";
} else {
echo "Environment variables are invalid.\n";
}
*/
?>
Add your comment