Files
apimacro/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php

90 lines
1.9 KiB
PHP
Raw Normal View History

2024-05-07 12:17:25 +02:00
<?php
2024-08-13 13:44:16 +00:00
declare(strict_types=1);
2024-05-07 12:17:25 +02:00
namespace Dotenv\Repository\Adapter;
2024-08-13 13:44:16 +00:00
use PhpOption\Option;
2024-05-07 12:17:25 +02:00
use PhpOption\Some;
2024-08-13 13:44:16 +00:00
final class ServerConstAdapter implements AdapterInterface
2024-05-07 12:17:25 +02:00
{
/**
2024-08-13 13:44:16 +00:00
* Create a new server const adapter instance.
2024-05-07 12:17:25 +02:00
*
2024-08-13 13:44:16 +00:00
* @return void
2024-05-07 12:17:25 +02:00
*/
2024-08-13 13:44:16 +00:00
private function __construct()
2024-05-07 12:17:25 +02:00
{
2024-08-13 13:44:16 +00:00
//
}
/**
* 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());
2024-05-07 12:17:25 +02:00
}
/**
2024-08-13 13:44:16 +00:00
* Read an environment variable, if it exists.
2024-05-07 12:17:25 +02:00
*
2024-05-17 12:24:19 +00:00
* @param non-empty-string $name
2024-05-07 12:17:25 +02:00
*
2024-08-13 13:44:16 +00:00
* @return \PhpOption\Option<string>
2024-05-07 12:17:25 +02:00
*/
2024-08-13 13:44:16 +00:00
public function read(string $name)
2024-05-07 12:17:25 +02:00
{
2024-08-13 13:44:16 +00:00
/** @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';
}
2024-05-17 12:24:19 +00:00
2024-08-13 13:44:16 +00:00
if ($value === true) {
return 'true';
}
2024-05-17 12:24:19 +00:00
2024-08-13 13:44:16 +00:00
/** @psalm-suppress PossiblyInvalidCast */
return (string) $value;
});
2024-05-07 12:17:25 +02:00
}
/**
2024-08-13 13:44:16 +00:00
* Write to an environment variable, if possible.
2024-05-07 12:17:25 +02:00
*
2024-05-17 12:24:19 +00:00
* @param non-empty-string $name
2024-08-13 13:44:16 +00:00
* @param string $value
2024-05-07 12:17:25 +02:00
*
2024-08-13 13:44:16 +00:00
* @return bool
2024-05-07 12:17:25 +02:00
*/
2024-08-13 13:44:16 +00:00
public function write(string $name, string $value)
2024-05-07 12:17:25 +02:00
{
$_SERVER[$name] = $value;
2024-08-13 13:44:16 +00:00
return true;
2024-05-07 12:17:25 +02:00
}
/**
2024-08-13 13:44:16 +00:00
* Delete an environment variable, if possible.
2024-05-07 12:17:25 +02:00
*
2024-05-17 12:24:19 +00:00
* @param non-empty-string $name
2024-05-07 12:17:25 +02:00
*
2024-08-13 13:44:16 +00:00
* @return bool
2024-05-07 12:17:25 +02:00
*/
2024-08-13 13:44:16 +00:00
public function delete(string $name)
2024-05-07 12:17:25 +02:00
{
unset($_SERVER[$name]);
2024-08-13 13:44:16 +00:00
return true;
2024-05-07 12:17:25 +02:00
}
}