simplydi/simplytemplate

Very simple native PHP templating

dev-main 2023-08-04 16:19 UTC

This package is auto-updated.

Last update: 2024-05-04 18:02:27 UTC


README

This is a very simple native PHP templating system for small projects.

Notes

  • suitable for small projects only; for more complexity use League Plate, Twig, Latte, etc.
  • currently in development = prone to errors
  • created for learning purpose

Usage

Create the template to render. Extend a layout using @extend=layoutName directive.

You can escape the variables using $this->esc($var).

// Template to render: "page.php"

@extend=_layout

<h1><?= $title ?></h1>
<p><?= $content ?></p>

<?= $this->esc("<p>hello</p>");?>

_layout.php:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= $title ?></title>
</head>

<body>
    <header>
        this is header
    </header>

    <main>
        <?= $content ?>
    </main>

    <aside>
        <?php include('_sidebar.php') ?>
    </aside>

    <footer>
        footer here
    </footer>
</body>

</html>

To include any partial just use the php function include().

using the template engine to render:

<?php

include_once 'vendor/autoload.php';

$templateDir = __DIR__ . '/views';
$templateExtension = 'php';

$template = new \SimplyDi\SimplyTemplate\Engine(
    $templateDir,
    $templateExtension
);

$data = [
    'title' => 'My Page Title',
    'content' => 'This is the main content of the page.',
];

// get the template html via renderer
$output = $template->render('page', $data);

echo $output; // outputs the html