byjg / jinja-php
PHP版本的Jinja模板引擎
4.9.1
2024-07-18 10:49 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: 5.7.*|7.4.*|^9.5
This package is auto-updated.
Last update: 2024-09-16 22:13:27 UTC
README
Jinja for PHP 是 Jinja2 模板引擎在 PHP 中的实现。
简介
这个库是将 Jinja2 模板引擎移植到 PHP 中的版本。它是 Jinja2 模板引擎的部分实现。
该库的主要目标是允许在 Jinja Python 和 PHP 中处理模板,然而其 API 与 Python 原版并不相同。
实现的功能
目前实现了以下功能
字面量
大多数字面量都得到了支持。例如。
{{ 1 }} {{ 1.2 }} {{ "Hello World" }} {{ true }} {{ false }} {{ none }} {{ [1, 2, 3] }} {{ ['a': 1, 'b': 2] }} // It is different from Python
@todo: 使用 Python 的表示法来表示字典。
变量
大多数变量都得到了支持。例如。
{{ myvar }} {{ myvar.myproperty }} {{ myvar.myproperty.1 }} {{ myvar.myproperty.a }} {{ myvar.myproperty.a.myproperty }} {{ myvar.myproperty.a.myproperty.1 }} {{ myvar.myproperty.a.myproperty.1.myproperty }}
@todo: 尚未支持括号表示法。
过滤器
实现了一些过滤器
{{ var | upper }} {{ var | lower }} {{ var | default }} {{ var | default('-') }} {{ var | replace('a', 'b') }} {{ var | join }} {{ var | join(',') }} {{ var | split }} {{ var | split(',') }} {{ var | capitalize }} {{ var | trim }} {{ var | trim('-') }} {{ var | length }}
数学运算
{{ 1 + 2 }} {{ 1 - 2 }} {{ 1 * 2 }} {{ 1 / 2 }} {{ 1 % 2 }} {{ 1 ** 2 }}
连接
{{ "Hello" ~ "World" }} {{ var1 ~ var2 }}
比较
{{ 1 == 2 }} {{ 1 != 2 }} {{ 1 < 2 }} {{ 1 <= 2 }} {{ 1 > 2 }} {{ 1 >= 2 }}
逻辑运算
Python 和 PHP 实现之间存在一些差异。TODO: 使用 and
和 or
代替 &&
和 ||
{{ 1 && 2 }} {{ 1 || 2 }} {{ ! 1 }}
如果
@todo: 尚未实现 elif
{% if var1 == var2 %} {{ var1 }} is equal to {{ var2 }} {% else %} 1 is not equal to 2 or 3 {% endif %}
{% if 1 == 2 %} 1 is equal to 2 {% else %} 1 is not equal to 2 or 3 {% endif %}
循环
@todo: 尚未实现 else
{% for item in items %} {{ item }} {% endfor %}
{% for key, value in items %} {{ key }}: {{ value }} {% endfor %}
循环控制变量
- loop.index
- loop.index0
- loop.revindex
- loop.revindex0
- loop.first
- loop.last
- loop.length
{% for item in items %} {{ loop.index }}: {{ item }} {% endfor %}
用法
use ByJG\JinjaPhp\Template; $templateString = <<<EOT Hello {{ name }} EOT; $template = new Template($templateString); $template->withUndefined(new DebugUndefined()); // Default is StrictUndefined $variables = [ 'name' => 'World' ]; echo $template->render($variables);
安装
composer require byjg/jinja-php