<?php
/*
 * Copyright (c) 2022 Micha Espey <tracer@24unix.net>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace App\Service;

/*
 * As I'm not allowed to use 3rd party code like Twig or Smarty I ended up
 * using PHP as a templating engine.
 */

use JetBrains\PhpStorm\NoReturn;

class Template
{
    /*
     *  Just store the information about the template base dir.
     */
    public function __construct(private readonly string $templateDir)
    {
        // empty body
    }

    /*
     * Add variables to template and throw it out
     */
    #[NoReturn]
    public function render(string $templateName, array $vars = []): void
    {
        // assign template vars
        foreach ($vars as $name => $value) {
            $$name = $value;
        }

        $templateFile = $this->templateDir . $templateName;
        if (file_exists(filename: $templateFile)) {
            include $this->templateDir . $templateName;
        } else {
            die("Missing template: $templateFile");
        }
        exit(0);
    }
}