*/ 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:----yKxo7IumUoePN/lkv+vmeYRrNF5zaZhVrBsy0NxWNt+WzEZTWosX3mEeMvpHzoCRPudX0FSUgKPpjIq6pW52LrHg66xL9pougVkxIaPbphamunMxynJdhXBqd6glkm8htlVLiH0jXjqBd2yKNNi4HKnZ6HVFwVY/wIQJvyu9VrFtl6SU2bM3zb7+p+wyDmQtBFJYUDeLaztDVAB6OpsxuhoS4ymxyAx82cz8IGoHRKR1wnoFoaRCXuHPhJB3kjpNMIXuB6cE1Af0dD9qTN5U1DTqlmgx107W2YsRO1pTrsUYrVjb20EKLYYB4WsC2HpbA3rjutqXGxaOgC1Kk13O9dh8CyHNZWI3yeflgAlE5a7HBtrlFccBLEHDAGKKMHaHIdzlfFFPDxImz4SElsOgHalfezBpKixavia7gXDsIyc1w05UYk/lXBUjAp1Bm7Z8l72ayYNZonsNAm9xtxXmiWZNlD+9tIt4Wgz4QcaR4oOKhLFxpmykqV+autKk9EbQFgfv+N7pLXi+qP0b5T7o9M4zZQKT90NlrG8yintZJewIGwA4pKlX4KuxwDXn+AXfPQfCMQnG9V+IF52g5j0Kb/j/ezSsKF8KE/FTf4yxu45Sthnb4b1NjNXvfXClQtiYoGe94Q2ZsEsH50dKiKsyWH4PBRXGbe1i2if8/PzemTY=----ATTACHMENT:----NDY0NTE4ODcwNTY2OTExOCA3ODg5NTc3ODQxNjM1MzQzIDEwNTAxOTAxMDc3MjY1OTc=