<?php
// app/Core/Controller.php
// Základní třída pro všechny controllery – poskytuje sdílené nástroje (View, DB, přesměrování).

namespace App\Core;

/**
 * Rodičovský controller.
 * Každý controller v App\Controllers dědí tuto třídu a získává
 * instanci View pro renderování a přístup k databázi.
 */
class Controller
{
    protected View $view;
    protected $db;

    /** Inicializuje View a uloží instanci databáze. */
    public function __construct($db = null)
    {
        $this->view = new View();
        $this->db = $db;
    }

    /** Přesměruje prohlížeč na zadanou URL a ukončí skript. */
    protected function redirect(string $url)
    {
        header('Location: ' . $url);
        exit;
    }

    /** Nastaví HTTP kód, zobrazí chybovou stránku a ukončí skript. */
    protected function abort(int $code, string $message): void
    {
        http_response_code($code);
        $this->view->render('error', ['message' => $message]);
        exit;
    }
}