


Помощь по php
Помогите написать код, который будет собирать конфигурацию из нескольких папок и файлов. Структура файлов следующая:
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.

Любишь её?
Или ты Питарас?
Я так и знал что твоя Девушка!
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));
Вот код, который соответствует вашим требованиям:
```php
<?php
// Получаем значение переменной PROJECT_PHP_SERVER
$server = getenv('PROJECT_PHP_SERVER');
// Если переменная существует и равна development
if ($server && $server === 'development') {
// Подключаем файлы из папки default
$config = require __DIR__ . '/config/default/db.php';
$config = require __DIR__ . '/config/default/debug.php';
$config = require __DIR__ . '/config/default/language.php';
$config = require __DIR__ . '/config/default/template.php';
// Подключаем файлы из папки development и перетираем соответствующие пункты в $config
$config = require __DIR__ . '/config/development/db.php';
$config = require __DIR__ . '/config/development/language.php';
} elseif ($server && $server === 'production') {
// Подключаем файлы из папки default
$config = require __DIR__ . '/config/default/db.php';
$config = require __DIR__ . '/config/default/language.php';
// Подключаем файлы из папки production и перетираем соответствующие пункты в $config
$config = require __DIR__ . '/config/production/db.php';
} else {
// Подключаем файлы из папки default
$config = require __DIR__ . '/config/default/db.php';
}
// Возвращаем конфигурацию
return $config;
```
Этот код работает следующим образом:
* Сначала мы получаем значение переменной PROJECT_PHP_SERVER. Если она не существует, то мы просто подключаем файлы из папки default.
* Если переменная существует, то мы проверяем ее значение. Если оно равно development, то мы подключаем файлы из папки development и перетираем соответствующие пункты в переменную $config. Если значение равно production, то мы делаем то же самое, только подключаем файлы из папки production.
* В конце мы возвращаем переменную $config.
Вот пример использования этого кода:
```php
$config = load_config();
// Выводим значение параметра database_host из конфигурации
echo $config['database_host'];
```
Этот код выведет значение параметра database_host из конфигурации, которая будет зависеть от значения переменной PROJECT_PHP_SERVER. Если переменная не существует или задана неверно, то будет выведено значение параметра database_host из папки default.