guardUnusableDirectory($directory); $this->directory = realpath($directory); $factory = new FilterFactory(); $this->filters = array_map([$factory, 'createFromString'], $filters); } public function getDirectory(): string { return $this->directory; } /** * @return DocumentFilter[] */ public function getFilters(): array { return $this->filters; } private function guardUnusableDirectory(string $directory): void { if (!file_exists($directory)) { throw new DirectoryNotFoundException($directory); } if (!is_dir($directory)) { throw new NotADirectoryException($directory); } if (!is_readable($directory)) { throw new DirectoryNotReadableException($directory); } } }