mirror of
https://github.com/shlinkio/shlink.git
synced 2024-11-23 13:23:33 +03:00
34 lines
1.2 KiB
PHP
34 lines
1.2 KiB
PHP
<?php
|
|
use Zend\Stdlib\ArrayUtils;
|
|
use Zend\Stdlib\Glob;
|
|
|
|
/**
|
|
* Configuration files are loaded in a specific order. First ``global.php``, then ``*.global.php``.
|
|
* then ``local.php`` and finally ``*.local.php``. This way local settings overwrite global settings.
|
|
*
|
|
* The configuration can be cached. This can be done by setting ``config_cache_enabled`` to ``true``.
|
|
*
|
|
* Obviously, if you use closures in your config you can't cache it.
|
|
*/
|
|
|
|
$cachedConfigFile = 'data/cache/app_config.php';
|
|
|
|
$config = [];
|
|
if (is_file($cachedConfigFile)) {
|
|
// Try to load the cached config
|
|
$config = include $cachedConfigFile;
|
|
} else {
|
|
// Load configuration from autoload path
|
|
foreach (Glob::glob('config/autoload/{{,*.}global,{,*.}local}.php', Glob::GLOB_BRACE) as $file) {
|
|
$config = ArrayUtils::merge($config, include $file);
|
|
}
|
|
|
|
// Cache config if enabled
|
|
if (isset($config['config_cache_enabled']) && $config['config_cache_enabled'] === true) {
|
|
file_put_contents($cachedConfigFile, '<?php return ' . var_export($config, true) . ';');
|
|
}
|
|
}
|
|
|
|
// Return an ArrayObject so we can inject the config as a service in Aura.Di
|
|
// and still use array checks like ``is_array``.
|
|
return new ArrayObject($config, ArrayObject::ARRAY_AS_PROPS);
|