Puja v1.1
Puja is a lightweight, flexible and easy PHP template engine. Inspired in django, Puja also support validate template syntax!, (*1)
Install:
* Composer, (*2)
composer require jinnguyen/puja
require 'vendor/autoload.php';
$puja = new Puja();
require '/path/to/Autoload.php';
$puja = new Puja();
Some of Puja's features:
* VALIDATE TEMPLATE SYNTAX
* it is extremely fast
* no template parsing overhead, only compiles once.
* it is smart about recompiling only the template files that have changed.
* unlimited nesting of sections, conditionals, etc.
* built-in caching of template output., (*3)
Validate syntax:
Puja support validate syntax before the parser run compiler. This will helpfull for you to write template syntax., (*4)
Download
GIT: git clone https://github.com/jinnguyen/puja.git
SVN: svn checkout https://github.com/jinnguyen/puja.git
Source code: https://github.com/jinnguyen/puja/zipball/master, (*5)
Bug list:
https://github.com/jinnguyen/puja/issues?page=1&state=open, (*6)
Example:
file template: index.tpl:, (*7)
{% extends master.tpl %}
{% block body %}
Hello, {{ a }
Welcome you go to Puja template examples
{% endblock %}
The result will be:, (*8)

Puja only show debug when mode debug is enabled
** We recommend you should only enable mode debug when your app is in develop. And disable it when your app go to production. It will save a lot time to template engine parser.
Basic API Usage:
- template file: index.tpl, (*9)
Hello {{ username }},
Welcome you go to the very first exmplate of Puja template.
<?php
require_once '/path/to/Autoload.php';
$tpl = new Puja;
$tpl->tpl_dir = '/path/to/template/folder/';
$data = array(
'username'=>'Jin Nguyen',
);
$tpl->parse($template_file = 'index.tpl', $data);
?>
The result will show:, (*10)
Hello Jin Nguyen,
Welcome you go to the very first exmplate of Puja template.
See User's guide for full information.
, (*11)
Template Inheritance:
- master.tpl:, (*12)
==== Start Master ===
{% block body %}Master Body{% endblock body %}
{% block javascript %}Master javascript{% endblock javascript %}
==== End Master ====
{% block javascript %}Index javascript{% endblock javascript %}
{% block body %}Index Body{% endblock body %}
And the result will be:, (*13)
==== Start Master ===
Index Body
Index javascript
==== End Master ====
more detail >> , (*14)