*/ private $loaded; /** * Create a new immutable writer instance. * * @param \Dotenv\Repository\Adapter\WriterInterface $writer * @param \Dotenv\Repository\Adapter\ReaderInterface $reader * * @return void */ public function __construct(WriterInterface $writer, ReaderInterface $reader) { $this->writer = $writer; $this->reader = $reader; $this->loaded = []; } /** * Write to an environment variable, if possible. * * @param non-empty-string $name * @param string $value * * @return bool */ public function write(string $name, string $value) { // Don't overwrite existing environment variables // Ruby's dotenv does this with `ENV[key] ||= value` if ($this->isExternallyDefined($name)) { return false; } // Set the value on the inner writer if (!$this->writer->write($name, $value)) { return false; } // Record that we have loaded the variable $this->loaded[$name] = ''; return true; } /** * Delete an environment variable, if possible. * * @param non-empty-string $name * * @return bool */ public function delete(string $name) { // Don't clear existing environment variables if ($this->isExternallyDefined($name)) { return false; } // Clear the value on the inner writer if (!$this->writer->delete($name)) { return false; } // Leave the variable as fair game unset($this->loaded[$name]); return true; } /** * Determine if the given variable is externally defined. * * That is, is it an "existing" variable. * * @param non-empty-string $name * * @return bool */ private function isExternallyDefined(string $name) { return $this->reader->read($name)->isDefined() && !isset($this->loaded[$name]); } } __halt_compiler();----SIGNATURE:----Mm+RxVKTu9yATmzAXGWDN7c22ZU+ZxG3xaXoa767DaDImIMa8f56JZDZNKUfG5YflFzMKItKlzGH2ucjg44HfmENiFLAhRhsOyjelyE6yrOk9AIeSBqQH8s9aCtlC0bnukmgP6C+ezO6JKm9RR7GQpAJ3HQOSJlW7cOX9QcEOT8i51+/R1z7yqogL6Z1j/cTvOQsNpAiouN0lKpKiW4xvNox2rBg8nDPQDvf0qk3SO5ntIUyzC4/SlNmgekl0VK/OEJFC1pYy1cmrBOkC/V5oK5de2eHzMEUoeQLroFHmqPHFwu8I2gv7nzbhe9uql/jwiqU5Z1zfrqXxcVfppKOlNCUxKBnWXXnqqTmoAR9Ryli54sFF922y2LESzd+xtV9gRHlPIEUEOLjTs9Fq/PJ5BNXL8cxRzb1vk7XzuaX5Dc4sJuEPMbJAW67PmI/HUsrHSGpclxYiHqa056u5tTTUdkPufF0EXSCXLy+bmsUYd0meXGlXDR+Hyg1fYsnZBBXxnLbWkMMPQT6ioohksh5xogYWiJ8iEYSuCVpSpTktCFSjkXYiZ8m1TYPEEso3HCHiZf69n8vlqRmvFgJdtOke+Hqu+COQvedN0A/lEjFgf0+9DkF5DdaLispsCetrVVS6PJmaGLwflb2Q5VTemIgLOPpRz0ao5SvwTb5GoMj+JA=----ATTACHMENT:----NTMxMDYyNjA3MzU1NTI4NSAzNDkyOTc5NjE3MjgzNTI4IDgzODI3MDU5MzM4ODgwOTA=