我是靠谱客的博主 每日一库,最近开发中收集的这篇文章主要介绍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安装这个库:

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> &lt;script&gt;alert();&lt;/script&gt;

请注意,自动转义不是标准的 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\TemplateLiquid::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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部