我需要以多种不同的文件格式创建任意数量的报告。我可以使用 Smarty 模板输出的大多数格式。但是,输出到 Excel 和 PDF 会使事情变得复杂,需要使用 FPDF 或 TCPDF 和 PHPExcel。
我正在尝试找出通过一种或多种设计模式(如果可能)来组织课程的最佳方式。
输出格式:
- 文字-Smarty
- 文本(带 PCL 格式) - Smarty
- CSV - 聪明的
- HTML - 聪明的
- Excel - PHPExcel
- PDF - FPDF / TCPDF
这些格式需要能够在内存中进行流式传输或写入文件以供以后使用。
所有报告唯一一致的是它们需要数据,直到添加 PDF 和 Excel 支持,一个模板。目前我有一个 Report 类,它有一个名为 getData() 的抽象方法。每个子类(例如 SpecificReport)获取它需要的数据并将其存储在类属性中以绑定到模板等。
每个报告都需要以所有格式提供。
Report 类目前处理输出,但添加对 Excel 和 PDF 的支持使这成为不可能。除了像 Smarty 那样将数据绑定到模板之外,还有很多其他功能。每个报告都需要特定的代码。我想我可以在每个报告子类中重载这些方法。
有没有人遇到过类似的任务?