This commit is contained in:
Paolo A
2024-08-13 13:44:16 +00:00
parent 1bbb23088d
commit e796d76612
4001 changed files with 30101 additions and 40075 deletions

View File

@@ -1,72 +1,89 @@
<?php
declare(strict_types=1);
namespace Dotenv\Repository\Adapter;
use PhpOption\None;
use PhpOption\Option;
use PhpOption\Some;
class ServerConstAdapter implements AvailabilityInterface, ReaderInterface, WriterInterface
final class ServerConstAdapter implements AdapterInterface
{
/**
* Determines if the adapter is supported.
* Create a new server const adapter instance.
*
* @return void
*/
private function __construct()
{
//
}
/**
* Create a new instance of the adapter, if it is available.
*
* @return \PhpOption\Option<\Dotenv\Repository\Adapter\AdapterInterface>
*/
public static function create()
{
/** @var \PhpOption\Option<AdapterInterface> */
return Some::create(new self());
}
/**
* Read an environment variable, if it exists.
*
* @param non-empty-string $name
*
* @return \PhpOption\Option<string>
*/
public function read(string $name)
{
/** @var \PhpOption\Option<string> */
return Option::fromArraysValue($_SERVER, $name)
->filter(static function ($value) {
return \is_scalar($value);
})
->map(static function ($value) {
if ($value === false) {
return 'false';
}
if ($value === true) {
return 'true';
}
/** @psalm-suppress PossiblyInvalidCast */
return (string) $value;
});
}
/**
* Write to an environment variable, if possible.
*
* @param non-empty-string $name
* @param string $value
*
* @return bool
*/
public function isSupported()
public function write(string $name, string $value)
{
$_SERVER[$name] = $value;
return true;
}
/**
* Get an environment variable, if it exists.
* Delete an environment variable, if possible.
*
* @param non-empty-string $name
*
* @return \PhpOption\Option<string|null>
* @return bool
*/
public function get($name)
{
if (!array_key_exists($name, $_SERVER)) {
return None::create();
}
$value = $_SERVER[$name];
if (is_scalar($value)) {
/** @var \PhpOption\Option<string|null> */
return Some::create((string) $value);
}
if (null === $value) {
/** @var \PhpOption\Option<string|null> */
return Some::create(null);
}
return None::create();
}
/**
* Set an environment variable.
*
* @param non-empty-string $name
* @param string|null $value
*
* @return void
*/
public function set($name, $value = null)
{
$_SERVER[$name] = $value;
}
/**
* Clear an environment variable.
*
* @param non-empty-string $name
*
* @return void
*/
public function clear($name)
public function delete(string $name)
{
unset($_SERVER[$name]);
return true;
}
}