*/ 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:----Er6QOcWJfVNig8cfS0Od3Nk8moNVEjP7eP17iLSNVKN0DQ37A5lQTAz3g1bQKVXbYBEqA5JhD0RQeS8x3o9uyJKrnvZgqPAgn1m9f7SWns1z7NvpFivv6bqwNAylyJvupTvynAl1sSo0dwuZyC+Brz6k/eYKQotJi//Mk5FDCfFPzuGt/px7HNY7A7sh7hF0X0zpurO6msAk2P//Z43i/0FLF25FCox0FzGo+jyUEwqO98DouYpHTwiryPWB3dqSzoqqSmvAA5g30eIH+kLXSByzs3ZXcD15lyohCMfua6KwHhamRfNCdXNwxwSAwNiz8PvknkZYLZhbkGYEGFPugKPkR5gBdLQjzLYF7XYsWbvi+ZHYhgd9ancJY/rXrJysN2sxEcZEBTJjQSAmrAEHmXNc+OrxuoViGjepFjJGhMBBlTPjscgFKrV8P5taJq38YiRhGxsPHeAg0/y+SfzSRT7BDnxLP7nFbhsMcJzC5b6bYVxb95trGR5Stbk/zQLcPJ9n5fCQyMfpTUXd8M3mLrPmaDRVCcunbWCO3ZAQ7rylrK1I+5C1AV8gqwcFGvffkXqG7DJkx496pEHA9CFzz9UBt7eEQEhhWqNpfOCKr+5ua06FXo/ObOfUBAOuM10ztfUojewLF5tJKCxT+cWkoSwSdOB38wUqhjOJ/Co04pM=----ATTACHMENT:----ODM4MzI4NjA4MzE1OTQ0NyAyNzE4MDU4NzIyMzY5ODkwIDk0NTY0OTI4Njc1OTk2NzM=