dataDir = $dataDir; $this->filesystem = new Filesystem(); } public function setDataDirectory(string $directory) { $this->dataDir = $directory; } public function getDataDirectory(string $subDirectory = null): string { $directory = $this->dataDir . '/'; if (!empty($subDirectory)) { $directory .= rtrim(ltrim($subDirectory, '/'), '/') . '/'; } $this->makeDir($directory); if (!is_dir($directory)) { throw new \Exception(sprintf('Directory "%s" does not exist', $directory)); } if (!is_writable($directory)) { throw new \Exception(sprintf('Directory "%s" is not writable', $directory)); } return $directory; } public function makeDir(string $directory) { $this->filesystem->mkdir($directory); } public function saveFile(string $filename, $data) { $this->filesystem->dumpFile($filename, $data); } public function removeFile(string $filename) { $this->filesystem->remove($filename); } }