2017 © Pedro Peláez
 

library liquid

Liquid template engine for PHP

image

liquid/liquid

Liquid template engine for PHP

  • Tuesday, July 24, 2018
  • by kalimatas
  • Repository
  • 11 Watchers
  • 64 Stars
  • 50,147 Installations
  • PHP
  • 5 Dependents
  • 0 Suggesters
  • 78 Forks
  • 6 Open issues
  • 20 Versions
  • 19 % Grown

The README.md

Liquid template engine for PHP CI Coverage Status Total Downloads

Liquid is a PHP port of the Liquid template engine for Ruby, which was written by Tobias Lutke. Although there are many other templating engines for PHP, including Smarty (from which Liquid was partially inspired), Liquid had some advantages that made porting worthwhile:, (*1)

  • Readable and human friendly syntax, that is usable in any type of document, not just html, without need for escaping.
  • Quick and easy to use and maintain.
  • 100% secure, no possibility of embedding PHP code.
  • Clean OO design, rather than the mix of OO and procedural found in other templating engines.
  • Seperate compiling and rendering stages for improved performance.
  • Easy to extend with your own "tags and filters":https://github.com/harrydeluxe/php-liquid/wiki/Liquid-for-programmers.
  • 100% Markup compatibility with a Ruby templating engine, making templates usable for either.
  • Unit tested: Liquid is fully unit-tested. The library is stable and ready to be used in large projects.

Why Liquid?

Why another templating library?, (*2)

Liquid was written to meet three templating library requirements: good performance, easy to extend, and simply to use., (*3)

Installing

You can install this lib via composer:, (*4)

composer require liquid/liquid

Example template

{% if products %}
    <ul id="products">
    {% for product in products %}
      <li>
        <h2>{{ product.name }}</h2>
        Only {{ product.price | price }}

        {{ product.description | prettyprint | paragraph }}

        {{ 'it rocks!' | paragraph }}

      </li>
    {% endfor %}
    </ul>
{% endif %}

How to use Liquid

The main class is Liquid::Template class. There are two separate stages of working with Liquid templates: parsing and rendering. Here is a simple example:, (*5)

use Liquid\Template;

$template = new Template();
$template->parse("Hello, {{ name }}!");
echo $template->render(array('name' => 'Alex'));

// Will echo
// Hello, Alex!

To find more examples have a look at the examples directory or at the original Ruby implementation repository's wiki page., (*6)

Advanced usage

You would probably want to add a caching layer (at very least a request-wide one), enable context-aware automatic escaping, and do load includes from disk with full file names., (*7)

use Liquid\Liquid;
use Liquid\Template;
use Liquid\Cache\Local;

Liquid::set('INCLUDE_SUFFIX', '');
Liquid::set('INCLUDE_PREFIX', '');
Liquid::set('INCLUDE_ALLOW_EXT', true);
Liquid::set('ESCAPE_BY_DEFAULT', true);

$template = new Template(__DIR__.'/protected/templates/');

$template->parse("Hello, {% include 'honorific.html' %}{{ plain-html | raw }} {{ comment-with-xss }}");
$template->setCache(new Local());

echo $template->render([
    'name' => 'Alex',
    'plain-html' => '<b>Your comment was:</b>',
    'comment-with-xss' => '<script>alert();</script>',
]);

Will output:, (*8)

Hello, Mx. Alex
<b>Your comment was:</b> &lt;script&gt;alert();&lt;/script&gt;

Note that automatic escaping is not a standard Liquid feature: use with care., (*9)

Similarly, the following snippet will parse and render templates/home.liquid while storing parsing results in a class-local cache:, (*10)

\Liquid\Liquid::set('INCLUDE_PREFIX', '');

$template = new \Liquid\Template(__DIR__ . '/protected/templates');
$template->setCache(new \Liquid\Cache\Local());
echo $template->parseFile('home')->render();

If you render the same template over and over for at least a dozen of times, the class-local cache will give you a slight speed up in range of some milliseconds per render depending on a complexity of your template., (*11)

You should probably extend Liquid\Template to initialize everything you do with Liquid::set in one place., (*12)

Custom filters

Adding filters has never been easier., (*13)

$template = new Template();
$template->registerFilter('absolute_url', function ($arg) {
    return "https://www.example.com$arg";
});
$template->parse("{{ my_url | absolute_url }}");
echo $template->render(array(
    'my_url' => '/test'
));
// expect: https://www.example.com/test

Requirements

  • PHP 7.4+

Some earlier versions could be used with PHP 5.3/5.4/5.5/5.6, though they're not supported anymore., (*14)

Issues

Have a bug? Please create an issue here on GitHub!, (*15)

https://github.com/kalimatas/php-liquid/issues, (*16)

Fork notes

This fork is based on php-liquid by Harald Hanek., (*17)

It contains several improvements:, (*18)

  • namespaces
  • installing via composer
  • new standard filters
  • raw tag added

Any help is appreciated!, (*19)

The Versions

24/07 2018

dev-master

9999999-dev https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 7

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

22/03 2018

1.4.8

1.4.8.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

09/02 2018

1.4.7

1.4.7.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

07/02 2018

1.4.6

1.4.6.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

12/12 2017

1.4.5

1.4.5.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

03/11 2017

1.4.4

1.4.4.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

10/10 2017

1.4.3

1.4.3.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

09/10 2017

1.4.2

1.4.2.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

28/09 2017

1.4.1

1.4.1.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

25/09 2017

1.4.0

1.4.0.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.6

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

23/09 2017

dev-old

dev-old https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

23/09 2017

1.3.1

1.3.1.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

17/07 2017

1.3.0

1.3.0.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

08/02 2017

1.2.2

1.2.2.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

08/02 2017

dev-fix-phpunit-version

dev-fix-phpunit-version https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

12/12 2016

1.2.1

1.2.1.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

12/12 2016

dev-feature-php7-tests

dev-feature-php7-tests https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

11/06 2016

1.2

1.2.0.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

01/06 2015

1.1

1.1.0.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid

07/09 2014

1.0

1.0.0.0 https://github.com/kalimatas/php-liquid

Liquid template engine for PHP

  Sources   Download

MIT

The Requires

  • php >= 5.3

 

The Development Requires

by Harald Hanek
by Mateo Murphy

template liquid