previous named Get\ReadEnvFile is no Get\DotEnv, static method is the same. Update for not parsing comments at the end of a line if the line was not in quotes. Strips everything after comment mark and also right trims any trailing spaces Old: FOO=Test # Comment -> $_ENV['FOO'] = "Test # Comment" New: FOO=Test # Comment -> $_ENV['FOO'] = "Test" Add phpUnit tests for DotEnv class. Update config.php with new class name The old class name exists and is markted as deprecated until next major release
79 lines
2.3 KiB
PHP
79 lines
2.3 KiB
PHP
<?php // phpcs:ignore warning
|
|
|
|
/********************************************************************
|
|
* AUTHOR: Clemens Schwaighofer
|
|
* CREATED: 2018/10/11
|
|
* SHORT DESCRIPTION:
|
|
* pre config included -> includes master config
|
|
* HISTORY:
|
|
*********************************************************************/
|
|
|
|
declare(strict_types=1);
|
|
|
|
define('CONFIG_PATH', 'configs' . DIRECTORY_SEPARATOR);
|
|
// config path prefix search, start with 0, got down each level __DIR__ has,
|
|
// if nothing found -> bail
|
|
$CONFIG_PATH_PREFIX = '';
|
|
// base path for loads
|
|
$__DIR__PATH = __DIR__ . DIRECTORY_SEPARATOR;
|
|
// don't load autoloader twice
|
|
$end_autoload = false;
|
|
for (
|
|
$dir_pos = 0, $dir_max = count(explode(DIRECTORY_SEPARATOR, __DIR__));
|
|
$dir_pos <= $dir_max;
|
|
$dir_pos++
|
|
) {
|
|
$CONFIG_PATH_PREFIX .= '..' . DIRECTORY_SEPARATOR;
|
|
if ($end_autoload === false) {
|
|
/************* AUTO LOADER *******************/
|
|
// composer auto loader, in composer.json file add classmap for lib/:
|
|
// "autoload": {
|
|
// "classmap": [
|
|
// "lib/"
|
|
// ]
|
|
// },
|
|
// NOTE: MUST RUN composer dump-autoload if file/class names are
|
|
// changed or new ones are added
|
|
if (
|
|
is_file(
|
|
$__DIR__PATH . $CONFIG_PATH_PREFIX
|
|
. 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'
|
|
)
|
|
) {
|
|
require $__DIR__PATH . $CONFIG_PATH_PREFIX
|
|
. 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
|
$end_autoload = true;
|
|
}
|
|
}
|
|
/************* MASTER CONFIG *******************/
|
|
if (
|
|
is_file($__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH . 'config.master.php')
|
|
) {
|
|
// load enviorment file if it exists
|
|
\CoreLibs\Get\DotEnv::readEnvFile(
|
|
$__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH
|
|
);
|
|
// load master config file that loads all other config files
|
|
require $__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH . 'config.master.php';
|
|
break;
|
|
}
|
|
}
|
|
// fail if no base DIR is not set
|
|
if (!defined('DIR')) {
|
|
exit('Base config could not be loaded');
|
|
}
|
|
// find trigger name "admin/" or "frontend/" in the getcwd() folder
|
|
foreach (['admin', 'frontend'] as $folder) {
|
|
if (strstr(getcwd() ?: '', DIRECTORY_SEPARATOR . $folder)) {
|
|
break;
|
|
}
|
|
}
|
|
// if content path is empty, fallback is default
|
|
/** @phpstan-ignore-next-line can be empty */
|
|
if (empty($folder)) {
|
|
$folder = 'default';
|
|
}
|
|
define('CONTENT_PATH', $folder . DIRECTORY_SEPARATOR);
|
|
|
|
// __END__
|