Skip to main content

Jinja for PHP

Sponsor Build Status Opensource ByJG GitHub source GitHub license GitHub release

Lightweight PHP implementation of the Jinja2 template engine originally developed for Python.

Overview

This library allows you to seamlessly process Jinja templates in PHP applications. It provides a familiar syntax for those coming from Python while offering a native PHP implementation.

Key Features

  • Python Compatibility: Process the same Jinja templates in both Python and PHP
  • Variable Support: Full support for variables, properties, and nested structures
  • Conditional Logic: if/else statements for conditional rendering
  • Loops: Iterate over arrays and objects with for loops
  • Filters: Transform output with built-in filters like upper, lower, default, etc.
  • Flexible Loaders: Load templates from strings or the filesystem
  • Undefined Variable Handling: Different strategies for handling undefined variables
  • Expressions: Support for mathematical operations, comparisons, and concatenation

Usage

use ByJG\JinjaPhp\Template;
use ByJG\JinjaPhp\Undefined\DebugUndefined;

$templateString = <<<EOT
Hello {{ name }}
EOT;

$template = new Template($templateString);
$template->withUndefined(new DebugUndefined()); // Default is StrictUndefined

$variables = [
'name' => 'World'
];
echo $template->render($variables);

Documentation

The detailed documentation is organized as follows:

  1. Basic Usage
  2. Template Syntax
  3. Loaders
  4. Undefined Variables
  5. Filters
  6. Control Structures
  7. Advanced Topics
  8. API Reference
  9. PHP Jinja vs Python Jinja2 Comparison

Installation

composer require byjg/jinja-php

Dependencies


Open source ByJG