accounts/common/config/ConfigLoader.php

65 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace common\config;
use yii\helpers\ArrayHelper;
class ConfigLoader {
private const ROOT_PATH = __DIR__ . '/../..';
private $application;
public function __construct(string $application) {
$this->application = $application;
}
public function getEnvironment(): string {
return YII_ENV;
}
public function getConfig(): array {
$toMerge = [
require __DIR__ . '/config.php',
];
// Common env-dependent configuration
$path = __DIR__ . '/config-' . YII_ENV . '.php';
if (file_exists($path)) {
$toMerge[] = require $path;
}
// Common local configuration
$path = __DIR__ . '/config-local.php';
if (file_exists($path)) {
$toMerge[] = require $path;
}
// App-related base configuration
$path = self::ROOT_PATH . '/' . $this->application . '/config/config.php';
if (file_exists($path)) {
$toMerge[] = require $path;
}
// App-related env-dependent configuration
$path = self::ROOT_PATH . '/' . $this->application . '/config/config-' . YII_ENV . '.php';
if (file_exists($path)) {
$toMerge[] = require $path;
}
// App-related local configuration
$path = self::ROOT_PATH . '/' . $this->application . '/config/config-local.php';
if (file_exists($path)) {
$toMerge[] = require $path;
}
return ArrayHelper::merge(...$toMerge);
}
public static function load(string $application): array {
return (new static($application))->getConfig();
}
}