| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- declare(strict_types=1);
- namespace Dotenv\Store;
- use Dotenv\Store\File\Paths;
- final class StoreBuilder
- {
- /**
- * The of default name.
- */
- private const DEFAULT_NAME = '.env';
- /**
- * The paths to search within.
- *
- * @var string[]
- */
- private $paths;
- /**
- * The file names to search for.
- *
- * @var string[]
- */
- private $names;
- /**
- * Should file loading short circuit?
- *
- * @var bool
- */
- private $shortCircuit;
- /**
- * The file encoding.
- *
- * @var string|null
- */
- private $fileEncoding;
- /**
- * Create a new store builder instance.
- *
- * @param string[] $paths
- * @param string[] $names
- * @param bool $shortCircuit
- * @param string|null $fileEncoding
- *
- * @return void
- */
- private function __construct(array $paths = [], array $names = [], bool $shortCircuit = false, string $fileEncoding = null)
- {
- $this->paths = $paths;
- $this->names = $names;
- $this->shortCircuit = $shortCircuit;
- $this->fileEncoding = $fileEncoding;
- }
- /**
- * Create a new store builder instance with no names.
- *
- * @return \Dotenv\Store\StoreBuilder
- */
- public static function createWithNoNames()
- {
- return new self();
- }
- /**
- * Create a new store builder instance with the default name.
- *
- * @return \Dotenv\Store\StoreBuilder
- */
- public static function createWithDefaultName()
- {
- return new self([], [self::DEFAULT_NAME]);
- }
- /**
- * Creates a store builder with the given path added.
- *
- * @param string $path
- *
- * @return \Dotenv\Store\StoreBuilder
- */
- public function addPath(string $path)
- {
- return new self(\array_merge($this->paths, [$path]), $this->names, $this->shortCircuit, $this->fileEncoding);
- }
- /**
- * Creates a store builder with the given name added.
- *
- * @param string $name
- *
- * @return \Dotenv\Store\StoreBuilder
- */
- public function addName(string $name)
- {
- return new self($this->paths, \array_merge($this->names, [$name]), $this->shortCircuit, $this->fileEncoding);
- }
- /**
- * Creates a store builder with short circuit mode enabled.
- *
- * @return \Dotenv\Store\StoreBuilder
- */
- public function shortCircuit()
- {
- return new self($this->paths, $this->names, true, $this->fileEncoding);
- }
- /**
- * Creates a store builder with the specified file encoding.
- *
- * @param string|null $fileEncoding
- *
- * @return \Dotenv\Store\StoreBuilder
- */
- public function fileEncoding(string $fileEncoding = null)
- {
- return new self($this->paths, $this->names, $this->shortCircuit, $fileEncoding);
- }
- /**
- * Creates a new store instance.
- *
- * @return \Dotenv\Store\StoreInterface
- */
- public function make()
- {
- return new FileStore(
- Paths::filePaths($this->paths, $this->names),
- $this->shortCircuit,
- $this->fileEncoding
- );
- }
- }
|