У меня есть класс, который должен читать файлы XLSX, но обрабатываемый файл также может быть файлом ZIP, содержащим файлы XLSX.
У меня следующий дизайн:
FileReader: Интерфейс для чтения файлов xlsx Worksheet.
interface FileReader {
// returns array of worksheet rows
public function readSheet(string file, string sheetName): array
}
XlsxFileReader реализует средство чтения файлов, использующее пакет PHPSpreadsheet для чтения и возврата строк рабочего листа.
FileProcessor : обрабатывает файл (ы) с помощью XlxsFileReader, DataMapper для сопоставления каждой строки рабочего листа с ожидаемой структурой и форматом.
Этого достаточно для чтения файла .xlsx и обработки это.
Моя проблема в том, что у меня есть требование обрабатывать zip-файлы, содержащие файлы xlsx.
Должен ли мой обработчик zip-файлов расширять FileProcessor? И в этом случае извлечь файлы, а затем передать файлы в файловый процессор?