Ejercicio: Ejercicio 3
Implementar un builder para generar archivos PDF y DOCX a partir de una estructura de datos común (patrón Builder).
Solución:
<?php
interface DocumentBuilder {
public function buildHeader();
public function buildContent();
public function buildFooter();
public function getDocument();
}
class PDFBuilder implements DocumentBuilder {
private $pdf;
public function buildHeader() {
$this->pdf->setHeader("PDF Header");
}
public function buildContent() {
$this->pdf->addPage("PDF Content");
}
public function buildFooter() {
$this->pdf->setFooter("PDF Footer");
}
public function getDocument() {
return $this->pdf;
}
}
class DOCXBuilder implements DocumentBuilder {
}
$data = ["header" => "Document Title", "content" => [...], "footer" => "Copyright"];
$pdfBuilder = new PDFBuilder();
$docxBuilder = new DOCXBuilder();
buildDocument($data, $pdfBuilder);
$pdf = $pdfBuilder->getDocument();
buildDocument($data, $docxBuilder);
$docx = $docxBuilder->getDocument();
function buildDocument($data, $builder) {
$builder->buildHeader($data["header"]);
$builder->buildContent($data["content"]);
$builder->buildFooter($data["footer"]);
}