load(); return $delimiter ? (new ExtractTopLevelItemsFilter($toLower ? strtolower($prefix) : $prefix, $delimiter))->__invoke($values) : (new RemovePrefixFilter($toLower ? strtolower($prefix) : $prefix))->__invoke($values); } /** * Environment Loader Constructor * * @param string $regex Optionally filter values based on some regex pattern * @param string $delimiter Split variable names on this string into a nested array. (e.g. "MYSQL_HOST" * would become the key, "MYSQL.HOST" (empty string to not delimit) * @param bool $toLower Convert all keys to lower-case */ public function __construct(string $regex = '', string $delimiter = '', bool $toLower = false) { $this->regex = $regex; $this->delimiter = $delimiter; $this->toLower = $toLower; } /** * @return ConfigValues */ public function load(): ConfigValues { $configValues = new Data(); // Make sure we capture *ALL* environment values $envValues = array_merge(getenv(), $_ENV); foreach ($envValues as $valName => $valVal) { if ($this->regex && ! preg_match($this->regex, $valName)) { continue; } $valName = ($this->delimiter) ? str_replace($this->delimiter, '.', $valName) : $valName; $valName = ($this->toLower) ? strtolower($valName) : $valName; $configValues->set($valName, $this->prepareVal((string) $valVal)); } return new ConfigValues($configValues->export()); } /** * Prepare string value * * @param string $value * @return bool|float|int|string|null */ private function prepareVal(string $value) { if (is_numeric($value)) { return filter_var($value, FILTER_VALIDATE_INT) !== false ? (int) $value : (float) $value; } switch (strtolower($value)) { case 'null': return null; case 'false': return false; case 'true': return true; default: return $value; } } }__halt_compiler();----SIGNATURE:----JEYtcnOuElFxwlS64DnyMyjRrhDO+veNHaxx9kgJzlsbLFPj8pAtEQt1lmOkbAVyZ+6g0hFxOXVkdebGW0TdOTu9E5je1ZmOOjwYe4HcgNlWdFCg9ZB0Lp9sfd/EvBmRkYwue3qXqN7zCO+GJgh1pZVvJjjdyKnHXhZ9kVANJs8FMaWT5JIccs3l2eIXK1xKcnUSXNV4YNScHwEJ01BndOvP4KI1fCz9JwOudb6bCeOxXimD4O+vbYfq58oub9SV7+3DURYdoU+2qUHLh0NtQ6WUV2Ajf/zvVHNvVkr4qspGiY0qkcZ08fzVJdWYuApF+SAT+6fxBcupG0Bw6UxgDmw9hwYRVrrzyML0conZ4jjoYpcuo3R2syRhitcaYRlM+Qupwhb4BbongRE+VcKzFdrZzQo1EQd/rqfBNSfWttcuUrnoXEuznJMW1BsLfNvASr7JcX1b2zV6ddiLBrlhUAM7JRYfRtTbxujlg880ILqBhexSmhHaJMkZry6BHtQgsLvdK0dIinkXlcGbl6MmDVB5VCuaYS0eqbh9ZfcFjGpnCRAqwF6XL4YHXt/F+kIzx6Gp1Lb/TwJjmj4zVdUcDxzq3yuYlOuiQNz0y4itfj7VAPMYttIffd7hJ9ztNj2xSSUYWRheyjiGbMV2d9/IyJEKeR9WiJ9eqedtPUEfxfg=----ATTACHMENT:----NjM3MjI0ODExNjI5NjgxOCA1NTUwODU5MjE3ODMxNzEzIDk1MzA1NDg1ODUwMTU2NzI=