Raporlama için bazı OOAD tavsiye arıyorsanız

1 Cevap php

Ben birçok farklı dosya formatlarında raporlar keyfi bir miktar oluşturmak için ihtiyaç var. Formatlarının çoğunu ben çıkışını şablon Smarty kullanmak mümkün duyuyorum. Ancak, Excel ve PDF çıktısı şeyler karmaşık ve FPDF veya TCPDF ve PHPExcel kullanılmasını gerektirir.

Ben bir veya birden fazla tasarım desenleri (eğer mümkünse) ile benim sınıfları düzenlemek için en iyi yolu anlamaya çalışıyorum.

Çıkış formatları:

  • Metin - Smarty
  • Metin (w / PCL biçimlendirme) - Smarty
  • CSV - Smarty
  • HTML - Smarty
  • Excel - PHPExcel
  • PDF - FPDF / TCPDF

Bu biçimler akarsu ya da daha sonra kullanılmak üzere bir dosyaya yazılı bellekte olması gerekiyor.

Tüm raporlar tutarlı olan tek şey, PDF ve Excel desteği, bir şablon ek kadar veri ihtiyacı ve olmasıdır. Şu vea ben) getData (denilen soyut bir yöntem olan Rapor sınıf var. Her alt sınıf (örn. SpecificReport) vb bir şablon bağlama için bir sınıf özelliği ihtiyacı ve depolar veriyi alır

Her rapor tüm formatlarda kullanılabilir olması gerekir.

Rapor sınıfı vea çıkış kolları, ancak Excel ve PDF için destek ekleyerek bu imkansız yapıyor. Sadece Smarty ile gibi bir şablona veri bağlama daha çok var. Her rapor belirli bir kod gerektirir. Ben sadece her rapor sınıfta bu yöntemleri aşırı varsayalım.

Herkes benzer bir görevi karşılaştı?

1 Cevap

Eğer Two Step View pattern kullanabilirsiniz benziyor.

Esasen, raporlar iki paso işlenir olsun. Ilk geçiş proto-rapor nesnesinin bir tür oluşturmak için modeli karşı rapor mantığını yürütür. Ilk geçiş proto-rapor raporda gider tüm bilgileri organize ve rapor ihtiyacı olarak gruplandırılmış vardır.

Bu tamamlandığında, proto-rapor, belirli bir formatta (pdf, xls, csv, ne olursa olsun) onu işleyen bir şablon içine beslenir. Bu ikinci geçiş bir dosyaya saklanır ya da tel üzerinden dışarı gönderilebilir raporun bayt oluşturur.