myerscode/templex

A lightweight, regex based template rendering engine

Installs: 18

Dependents: 1

Suggesters: 0

Security: 0

Stars: 1

Watchers: 2

Forks: 0

Open Issues: 0

Type:project

1.1.2 2022-02-11 22:03 UTC

This package is auto-updated.

Last update: 2024-04-12 02:48:28 UTC


README

A lightweight, regex based template rendering engine for PHP

Latest Stable Version Total Downloads License Tests

Why this package is helpful?

This package will allow you to define stubs and then hydrate the template using PHP variables. As the engine uses RegEx it does not rely on using eval or including and running the code as PHP.

This means that you are able to simply generate new PHP (or any type of text content filled files for that matter) you need.

Install

You can install this package via composer:

composer require myerscode/templex

Usage

$templateDirectory = __DIR__ . '/Resources/Templates/;
$templateExtentions = 'stub';
$templex = new Templex($templateDirectory, $templateExtentions);

echo $templex->render('index');

Template Directory

Templates

Templates can be any form of text based files. By default, Templex will look for files with .stub or .template file extensions.

Templex uses <{ and }> as opening and closing anchor tags to find and process Slots, which can be used to generate dynamic views from placeholders and logic.

Slots

Slots are the "magic" of Templex. They are the isolated functionality that perform replacement and hydrating actions on a template to create the final rendered output.

The default included slots are:

  • IncludeSlot - Includes another templates content
  • ControlSlot - Process flow based logic, such as foreach, if statements
  • VariableSlot - Replaces single placeholders

Includes

To include another template, in order to create reusable stubs you can simply include it by its template name.

<{ include partials.header }>

Conditions

Templex can process nested slots, so having nested control conditions are handled in the order they are found.

Conditions can be variables, numbers, booleans or literal strings and can the usual comparison evaluators.

<{ if( $value === 'foobar' ) }>
...
<{ if( $value > 7 ) }>
...
<{ if( $value == true ) }>
...
<{ if( $value != false ) }>

Examples

<{ if( $value === $condition ) }>
 <p>That value was true!</p>
<{ endif }>

<{ if( $value === 'foobar' ) }>
 <p>That value was true!</p>
<{ else }>
 <p>That value was false!</p>
<{ endif }>

Loops

Loops will take an array variable to create multiple iterations in your template.

Examples

<ul class="row">
    <{ foreach( $users as $user ) }>
        <li><{ $user }></li>
    <{ endforeach }>
</ul>

Variables

Variables are replaced matching anchors are found. They can are passed in at rendering, or created via other slots such as Loops.

Examples

Hi <{ $name }>!

Issues and Contributing

We are very happy to receive pull requests to add functionality or fixes.

Bug reports and feature requests can be submitted on the Github Issue Tracker.

Please read the Myerscode contributing guide for information on our Code of Conduct.

License

The MIT License (MIT). Please see License File for more information.