概述
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安装这个库:
composer require liquid/liquid
示例模板
{% 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 模板有两个独立的阶段:解析和渲染。这是一个简单的例子:
use Liquid\Template; $template = new Template(); $template->parse("Hello, {{ name }}!"); echo $template->render(array('name' => 'Alex')); // Will echo // Hello, Alex!
要查找更多示例,请查看examples
目录或原始 Ruby 实现存储库的wiki 页面。
高级用法
您可能想要添加一个缓存层(至少是一个请求范围的缓存层),启用上下文感知自动转义,并从磁盘加载包含完整文件名的内容。
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>', ]);
将输出:
Hello, Mx. Alex <b>Your comment was:</b> <script>alert();</script>
请注意,自动转义不是标准的 Liquid 功能:请小心使用。
类似地,以下代码片段将解析和呈现templates/home.liquid
,同时将解析结果存储在类本地缓存中:
\Liquid\Liquid::set('INCLUDE_PREFIX', ''); $template = new \Liquid\Template(__DIR__ . '/protected/templates'); $template->setCache(new \Liquid\Cache\Local()); echo $template->parseFile('home')->render();
如果您一遍又一遍地渲染相同的模板至少十几次,根据模板的复杂性,类本地缓存会在每次渲染几毫秒的范围内略微加快速度。
您可能应该扩展Liquid\Template
以Liquid::set
在一个地方初始化您所做的一切。
自定义过滤器
添加过滤器从未如此简单。
$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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复