feat: add DotEnv class
This commit is contained in:
@@ -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
39
src/Utils/DotEnv.php
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
namespace Bsr\Utils\WhichEnv;
|
namespace Bsr\Utils\WhichEnv;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
interface WhichEnvRuleInterface {
|
interface WhichEnvRuleInterface {
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user