<?php
// app/Core/View.php
// Zajišťuje renderování šablon – načte šablonu, rozbalí parametry a obalí ji layoutem.

namespace App\Core;

/**
 * Renderovací třída.
 * Metoda render() přijme název šablony a pole proměnných,
 * nastaví cestu k souboru šablony a zahrne hlavní layout (layout.php),
 * který šablonu uvnitř sebe vypíše.
 */
class View
{
    /** Cesta k aktuálně renderované šabloně; čte ji layout.php přes $this->file. */
    private string $file;

    /**
     * Renderuje šablonu zabalenou do layoutu.
     *
     * @param string $template Relativní cesta k šabloně bez přípony (např. 'users/index').
     * @param array  $params   Proměnné, které budou dostupné uvnitř šablony.
     */
    public function render(string $template, array $params = []): void
    {
        extract($params, EXTR_SKIP);

        $this->file = __DIR__ . '/../Views/' . $template . '.php';

        if (!file_exists($this->file)) {
            throw new \Exception("View not found: {$this->file}");
        }

        include __DIR__ . '/../Views/layout.php';
    }
}
