summaryrefslogtreecommitdiff
path: root/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php')
-rw-r--r--vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php141
1 files changed, 141 insertions, 0 deletions
diff --git a/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php b/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php
new file mode 100644
index 0000000..2ce0851
--- /dev/null
+++ b/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php
@@ -0,0 +1,141 @@
+<?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
+ );
+ }
+}