我是靠谱客的博主 每日一库,这篇文章主要介绍PHP模板引擎Liquid,现在分享给大家,希望可以做个参考。

Liquid 是用于 Ruby 的 Liquid 模板引擎的 PHP 版本,由 Tobias Lutke 编写。尽管还有许多其他适用于 PHP 的模板引擎,包括 Smarty(Liquid 的部分灵感来自于 Smarty),但 Liquid 具有一些值得移植的优势:

  • 可读且人性化的语法,可用于任何类型的文档,而不仅仅是 html,无需转义。

  • 快速且易于使用和维护。

  • 100% 安全,没有嵌入 PHP 代码的可能性。

  • 干净的 OO 设计,而不是其他模板引擎中的 OO 和过程的混合。

  • 分离编译和渲染阶段以提高性能。

  • 易于使用您自己的“标签和过滤器”进行扩展:https ://github.com/harrydeluxe/php-liquid/wiki/Liquid-for-programmers 。

  • 与 Ruby 模板引擎 100% 标记兼容,使模板可用于任何一个。

  • 单元测试:Liquid 完全经过单元测试。该库很稳定,可以在大型项目中使用。

为什么使用Liquid ?

为什么要另一个模板库?

编写 Liquid 是为了满足三个模板库要求:良好的性能、易于扩展和简单易用。

安装中

你可以通过composer安装这个库:

复制代码
1
composer require liquid/liquid

示例模板

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{% 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 %}

如何使用液体

主要Liquid::Template班级。使用 Liquid 模板有两个独立的阶段:解析和渲染。这是一个简单的例子:

复制代码
1
2
3
4
5
6
7
8
use Liquid\Template; $template = new Template(); $template->parse("Hello, {{ name }}!"); echo $template->render(array('name' => 'Alex')); // Will echo // Hello, Alex!

要查找更多示例,请查看examples目录或原始 Ruby 实现存储库的wiki 页面

高级用法

您可能想要添加一个缓存层(至少是一个请求范围的缓存层),启用上下文感知自动转义,并从磁盘加载包含完整文件名的内容。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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>', ]);

将输出:

复制代码
1
2
Hello, Mx. Alex <b>Your comment was:</b> &lt;script&gt;alert();&lt;/script&gt;

请注意,自动转义不是标准的 Liquid 功能:请小心使用。

类似地,以下代码片段将解析和呈现templates/home.liquid,同时将解析结果存储在类本地缓存中:

复制代码
1
2
3
4
5
\Liquid\Liquid::set('INCLUDE_PREFIX', ''); $template = new \Liquid\Template(__DIR__ . '/protected/templates'); $template->setCache(new \Liquid\Cache\Local()); echo $template->parseFile('home')->render();

如果您一遍又一遍地渲染相同的模板至少十几次,根据模板的复杂性,类本地缓存会在每次渲染几毫秒的范围内略微加快速度。

您可能应该扩展Liquid\TemplateLiquid::set在一个地方初始化您所做的一切。

自定义过滤器

添加过滤器从未如此简单。

复制代码
1
2
3
4
5
6
7
8
9
$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

要求

  • PHP 7.0+

一些早期版本可以与 PHP 5.3/5.4/5.5/5.6 一起使用,尽管它们不再受支持。


最后

以上就是每日一库最近收集整理的关于PHP模板引擎Liquid的全部内容,更多相关PHP模板引擎Liquid内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(302)

评论列表共有 0 条评论

立即
投稿
返回
顶部