feat: add DotEnv class

This commit is contained in:
Guillermo Pages
2021-08-30 17:52:45 +02:00
parent 2664f6261c
commit 3702d526bd
3 changed files with 47 additions and 8 deletions

View File

@@ -31,9 +31,9 @@ class Configuration {
private $values = array(); private $values = array();
/** /**
* *
*/ */
private function __construct() private function __construct()
{ {
if (!isset($this->values['session'])) { if (!isset($this->values['session'])) {
$this->values['session'] = array(); $this->values['session'] = array();
@@ -47,7 +47,7 @@ class Configuration {
$this->loadConfigFromFile(); $this->loadConfigFromFile();
} }
} }
/** /**
* The path to the file including file name * The path to the file including file name
* @param string $filePath * @param string $filePath
@@ -131,8 +131,8 @@ class Configuration {
* Checks whether the nested key exists * Checks whether the nested key exists
* *
* @param array $data * @param array $data
* @param array $keys * @param array $keys
* @return boolean * @return boolean
*/ */
public static function existsKeys(array $data, array $keys) public static function existsKeys(array $data, array $keys)
{ {
@@ -147,9 +147,9 @@ class Configuration {
/** /**
* @param array $data * @param array $data
* @param array $keys * @param array $keys
* @param any $default * @param any $default
* @return boolean * @return boolean
*/ */
public static function fetchRecursive(array $data, array $keys, $default = null) public static function fetchRecursive(array $data, array $keys, $default = null)
{ {

39
src/Utils/DotEnv.php Normal file
View File

@@ -0,0 +1,39 @@
<?php
namespace Bsr\Utils;
class DotEnv {
public static function loadFromFile($filepath) {
if (!file_exists($filepath)) {
throw new \Exception('Cannot find file');
}
$contents = file_get_contents($filepath);
$lines = explode(PHP_EOL, $contents);
$envvars = array_reduce($lines, function ($vars, $line) {
$parts = explode('=', $line);
$partsCount = count($parts);
if ($partsCount === 1 && strlen($parts[0]) <= 0) {
return $vars;
}
[$varname, $value] = $partsCount === 1
? [$parts[0], '']
: ($partsCount > 2
? [$parts[0], implode('=', array_slice($parts, 1))]
: $parts
);
$vars[$varname] = $value;
return $vars;
}, []);
return $envvars;
}
public static function MUTATE_SERVER_addEnvVars(array $variables) {
$_SERVER = array_merge($_SERVER, $variables);
}
public static function load(string $rootDir) {
$envvars = self::loadFromFile($rootDir . DIRECTORY_SEPARATOR . '.env');
self::MUTATE_SERVER_addEnvVars($envvars);
}
}

View File

@@ -2,7 +2,7 @@
namespace Bsr\Utils\WhichEnv; namespace Bsr\Utils\WhichEnv;
/** /**
* *
*/ */
interface WhichEnvRuleInterface { interface WhichEnvRuleInterface {
/** /**