path = $path; $this->passphrase = $passphrase; } /** @throws FileCouldNotBeRead */ public static function file(string $path, string $passphrase = ''): self { if (strpos($path, self::PATH_PREFIX) === 0) { $path = substr($path, 7); } if (! file_exists($path)) { throw FileCouldNotBeRead::onPath($path); } return new self($path, $passphrase); } public function contents(): string { if (! isset($this->contents)) { $this->contents = InMemory::file($this->path)->contents(); } return $this->contents; } public function passphrase(): string { return $this->passphrase; } }