updated packages
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace Dotenv\Environment;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* The default implementation of the environment variables interface.
|
||||
*/
|
||||
class DotenvVariables extends AbstractVariables
|
||||
{
|
||||
/**
|
||||
* The set of adapters to use.
|
||||
*
|
||||
* @var \Dotenv\Environment\Adapter\AdapterInterface[]
|
||||
*/
|
||||
protected $adapters;
|
||||
|
||||
/**
|
||||
* Create a new dotenv environment variables instance.
|
||||
*
|
||||
* @param \Dotenv\Environment\Adapter\AdapterInterface[] $adapters
|
||||
* @param bool $immutable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $adapters, $immutable)
|
||||
{
|
||||
$this->adapters = $adapters;
|
||||
parent::__construct($immutable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an environment variable.
|
||||
*
|
||||
* We do this by querying our adapters sequentially.
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function get($name)
|
||||
{
|
||||
if (!is_string($name)) {
|
||||
throw new InvalidArgumentException('Expected name to be a string.');
|
||||
}
|
||||
|
||||
foreach ($this->adapters as $adapter) {
|
||||
$result = $adapter->get($name);
|
||||
if ($result->isDefined()) {
|
||||
return $result->get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an environment variable.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string|null $value
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function set($name, $value = null)
|
||||
{
|
||||
if (!is_string($name)) {
|
||||
throw new InvalidArgumentException('Expected name to be a string.');
|
||||
}
|
||||
|
||||
// Don't overwrite existing environment variables if we're immutable
|
||||
// Ruby's dotenv does this with `ENV[key] ||= value`.
|
||||
if ($this->isImmutable() && $this->get($name) !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($this->adapters as $adapter) {
|
||||
$adapter->set($name, $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear an environment variable.
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function clear($name)
|
||||
{
|
||||
if (!is_string($name)) {
|
||||
throw new InvalidArgumentException('Expected name to be a string.');
|
||||
}
|
||||
|
||||
// Don't clear anything if we're immutable.
|
||||
if ($this->isImmutable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($this->adapters as $adapter) {
|
||||
$adapter->clear($name);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user