const PROJECT_PHP_SERVER = 'production';
$loadConfigEnv = static function(string $folder = '', string $path = __DIR__ .DIRECTORY_SEPARATOR): array
{
$config = [];
is_readable($path .$folder) || $folder = 'default';
if ($glob = glob($path .$folder .DIRECTORY_SEPARATOR .'*.php', GLOB_NOSORT | GLOB_ERR)) {
foreach ($glob as $glob) {
$config = array_merge($config, require $glob);
}
}
return $config;
};
print_r($loadConfigEnv(PROJECT_PHP_SERVER));
config
|-- default
| |-- db.php
| |-- debug.php
| |-- language.php
| `-- template.php
|-- development
| `-- db.php
`-- production
|-- db.php
`-- language.php
При этом код должен работать следующим образом:
¾ если в системном окружении есть переменная PROJECT_PHP_SERVER и она равна development, то должны быть подключены все файлы из папки default, данные занесены в перемененную $config, затем подключены файлы из папки development, а полученные данные должны перетереть соответствующие пункты сохраненные в $config.
¾ аналогичное поведение если PROJECT_PHP_SERVER равна production (естественно только для папки production)
¾ если переменной нет, или она задана неверно, то подключаются только файлы из папки default.