8000
Skip to content

Latest commit

 

History

59 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniTPL

The goal of the MiniTPL template engine is to provide a miniature framework which allows you to rapidly create and consume Smarty-like templates without adding the overhead of Smarty to your choice of a PHP framework.

In benchmarks the speed of Mini TPL is very close to PHP itself. All that is usually needed for Mini TPL is a 3KB PHP code overhead. So it beats Smarty, and usual PHP vsprintf and str_replace functionality.

With a total size of about 13KB and the functionality contained, this is one of the smallest full featured template engines for PHP to date.

MiniTPL is available on packagist as titpetric/minitpl.

To start using MiniTPL in your project with composer, create a composer.json file:

{
    "require": {
        "titpetric/minitpl": ">=1.0"
    }
}

And run composer install. You can start using MiniTPL right away.

<?php

include("vendor/autoload.php");

$tpl = new MiniTPL\Template;

$tpl->load("test.tpl");
$tpl->render();

The classes live in the MiniTPL namespace: MiniTPL\Template, MiniTPL\Compiler and MiniTPL\Hook. Compiler and Hook are usable stand-alone; Template is the entrypoint you normally want.

Escaping

Printed variables are escaped by default. The compiler scans the template to see where a variable lands, so {title} is escaped in a text node, in an attribute value and in a comment, and left alone inside a <script> or <style> body where html escaping would corrupt the code:

<a href="{news.link}" title="{news.title}">{news.title}</a>

A value that is already markup opts out per tag with {content|raw}, or its {content|unescape} alias. A whole template opts out with the {*noescape*} directive, and a whole Template instance with $tpl->set_escape(false).

This changes compiled output, so a cache written by an earlier version has to be cleared once on upgrade. See docs/minitpl-usage.md for the full rules.

phpscript

The engine is kept compatible with phpscript, a PHP interpreter written in Go. phpscript resolves composer.json and the vendor/ directory on its own, so the same vendor/autoload.php include works there:

phpscript example.php

Testing

The project tries to maintain 100% code coverage. You can verify this by running phpunit --coverage-text, or uncommenting the logging section within phpunit.xml.

About

Miniature fully featured PHP template engine

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0