Ejercicio: Ejercicio 2

Implementemos una función para generar reportes PDF y CSV mediante el patrón Strategy.

Solución:

<?php
// Strategy interface
interface ReportStrategy
{
    public function export(Report $report);
}

class PdfStrategy implements ReportStrategy
{
    public function export(Report $report)
    {
        // Generar PDF
    }
}

class CsvStrategy implements ReportStrategy
{
    public function export(Report $report)
    {
        // Generar CSV
    }
}

// Contexto
class Report
{

    protected $strategy;

    public function setExportStrategy(ReportStrategy $strategy)
    {
        $this->strategy = $strategy;
    }

    public function export()
    {
        $this->strategy->export($this);
    }
}

// Cliente
$report = new Report();
$report->setExportStrategy(new PdfStrategy());
$report->export(); // Exporta a PDF

$report->setExportStrategy(new CsvStrategy());
$report->export();// Ahora a CSV

Nosotros utilizamos cookies

Este sitio utiliza cookies para mejorar su experiencia de usuario.

Puedes aceptar todas las cookies pulsando en el botón de "Aceptar todas", rechazar todas las cookies pulsando el botón de "Rechazar cookies" o configurar manualmente usando el botón de "más opciones"

Para más información visita nuestra Política de cookies

Personaliza las Cookies

Estas cookies son necesarias para que el sitio web funcione y no se pueden desactivar en nuestros sistemas. Usualmente están configuradas para responder a acciones hechas por tí para recibir servicios, tales como ajustar tus preferencias de privacidad, iniciar sesión en el sitio, o llenar formularios. Puedes configurar tu navegador para bloquear o alertar la presencia de estas cookies, pero algunas partes del sitio web no funcionarán. Estas cookies no guardan ninguna información personal identificable.

Estas cookies nos permiten contar las visitas y fuentes de circulación para poder medir y mejorar el desempeño de nuestro sitio. Nos ayudan a saber qué páginas son las más o menos populares, y ver cuántas personas visitan el sitio. Toda la información que recogen estas cookies es agregada y, por lo tanto, anónima.