Мне нужно создать произвольное количество отчетов в разных форматах файлов. В большинстве форматов я могу использовать Smarty для шаблона вывода. Однако вывод в Excel и PDF усложняет ситуацию и требует использования FPDF или TCPDF и PHPExcel.
Я пытаюсь найти наилучший способ организации своих занятий с помощью одного или нескольких шаблонов проектирования (если это возможно).
Выходные форматы:
- Текст - Smarty
- Текст (с форматированием PCL) - Smarty
- CSV - Smarty
- HTML - Smarty
- Excel - PHPExcel
- PDF - FPDF / TCPDF
Эти форматы должны быть в памяти для потоковой передачи или записи в файл для последующего использования.
Единственное, что согласуется во всех отчетах, это то, что им нужны данные и вплоть до добавления поддержки PDF и Excel, шаблон. В настоящее время у меня есть класс Report, который имеет абстрактный метод getData (). Каждый подкласс (например, SpecificReport) получает необходимые данные и сохраняет их в свойстве класса для привязки к шаблону и т. Д.
Каждый отчет должен быть доступен во всех форматах.
Класс Report обрабатывает вывод в данный момент, но добавление поддержки Excel и PDF делает это невозможным. Это намного больше, чем просто привязка данных к шаблону, как в Smarty. Каждый отчет требует определенного кода. Я полагаю, я мог бы просто перегрузить эти методы в каждом подклассе отчета.
Кто-нибудь сталкивался с подобной задачей?