多くの異なるファイル形式で任意の量のレポートを作成する必要があります。Smarty を使用して出力をテンプレート化できるほとんどの形式。ただし、Excel および PDF への出力は複雑であり、FPDF または TCPDF と PHPExcel を使用する必要があります。
1 つまたは複数の設計パターン (可能であれば) を使用してクラスを編成する最善の方法を見つけようとしています。
出力形式:
- テキスト - Smarty
- テキスト (PCL フォーマット付き) - Smarty
- CSV - Smarty
- HTML - スマート
- エクセル - PHPエクセル
- PDF - FPDF / TPDF
これらの形式は、ストリーミング用にメモリに格納したり、後で使用するためにファイルに書き込んだりできる必要があります。
すべてのレポートで一貫している唯一のことは、データが必要であり、PDF と Excel のサポートが追加されるまで、テンプレートが必要であるということです。現在、getData() という抽象メソッドを持つ Report クラスがあります。各サブクラス (SpecificReport など) は必要なデータを取得し、テンプレートなどにバインドするためにクラス プロパティに格納します。
各レポートは、すべての形式で利用できる必要があります。
現時点では Report クラスが出力を処理しますが、Excel と PDF のサポートを追加すると、それが不可能になります。Smarty のようにデータをテンプレートにバインドするだけではありません。各レポートには特定のコードが必要です。各レポート サブクラスでこれらのメソッドをオーバーロードするだけでよいと思います。
誰かが同様のタスクに遭遇しましたか?