GithubHelp home page GithubHelp logo

puja's Introduction

Puja v1.1

Puja is a lightweight, flexible and easy PHP template engine. Inspired in django, Puja also support validate template syntax!

Install:

  • Composer
composer require jinnguyen/puja
require 'vendor/autoload.php';
$puja = new Puja();
  • Old style
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.

Validate syntax:
Puja support validate syntax before the parser run compiler. This will helpfull for you to write template syntax.

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

Bug list: https://github.com/jinnguyen/puja/issues?page=1&state=open

Example: file template: index.tpl:

{% extends master.tpl %}
{% block body %}
	Hello, {{ a }
	Welcome you go to Puja template examples
{% endblock %}

The result will be:

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
Hello {{ username }},
Welcome you go to the very first exmplate of Puja template.
  • php file: index.php
  <?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:

Hello Jin Nguyen,
Welcome you go to the very first exmplate of Puja template.

See User's guide for full information.

Template Inheritance:

  • master.tpl:
==== Start Master ===
{% block body %}Master Body{% endblock body %}
{% block javascript %}Master javascript{% endblock javascript %}
==== End Master ====
  • index.tpl
{% block javascript %}Index javascript{% endblock javascript %}
{% block body %}Index Body{% endblock body %}

And the result will be:

==== Start Master ===
Index Body
Index javascript
==== End Master ====

more detail >>

puja's People

Contributors

linhnmt avatar linhnnmt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

getsmygets

puja's Issues

Add check property and method exists

<?php
ini_set('display_errors', 'On');
include '../puja.php';
$tpl = new Puja;
$tpl->template_dir = 'templates/';
$tpl->cache_dir = 'cache/';

class Test
{
    public function b()
    {
        return 321;
    }
}

$tpl->parse('test.tpl', [
    'a' => new Test
]);

Template:

{{ a.b }}

Compiled template:

<?php 
$pujaFilter = new TemplateFilter;
$pujaTags = new TemplateTags;
$ast_puja_template = '';
$ast_puja_template .= (isset($a['b']) ? $a['b'] : null);
$ast_puja_template .= '';

template parse error

I got a error for this tag:
{% if a in b and c in d %}

Can you help to fix it? tks!

Chain error

Code:

<?php
require_once __DIR__ . '/puja-master/puja.php';
$tpl = new Puja;
$tpl->tpl_dir = __DIR__ . '/templates/';
$tpl->cache_dir = __DIR__ . '/cache/';

$output = $tpl->parse('index.html', [
    'a' => [
        'b' => [
            'c' => 1
        ]
    ]
]);

Template:

Hello world {{ a.b.c }}

return Hello world

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.