oscarpalmer/yogurt

此包已被弃用,不再维护。未建议替换包。

一个小型的模板引擎。

v1.3.0 2015-04-03 10:34 UTC

This package is not auto-updated.

Last update: 2021-07-09 23:08:52 UTC


README

PHP version Build Status Coverage Status

Yogurt 是一个受 Beach 的 Hammer 启发的 PHP 模板语言(>=5.3)。Hammer 的语法基于常规的 HTML 注释标签,因此您不需要为您的编辑器安装另一个语法高亮器。不错,对吧?

入门

安装

Yogurt 通过 Composer 提供。

{
  "require": {
    "oscarpalmer/yogurt": "1.*"
  }
}

基本用法

use oscarpalmer\Yogurt\Yogurt;

$yogurt = new Yogurt("./directory/for/templates", "template-extension");

$flavour = $yogurt->flavour("my-template");
# Or $flavour = new Flavour($yogurt, "my-template");

$flavour->data(array(
  "title" => "My Title"
));

$flavour->tagline = "My tagline.";

echo $flavour->taste();
# Or just echo $flavour;

语法

语法基于常规 HTML 注释和控制结构(ifforeach),基于 Twig 的语法,因此学习起来不应该太难。

变量

<p><!-- variable --></p>
<p><!-- chaining.variables.works.too --></p>

variable 是数据对象($flavour->data();)的直接子对象,而 chaining.variables.works.too 是数据对象内部多个数组或对象的嵌套子对象。

变量应该是 scalar 类型,即 booleanfloatintegerstring。如果不是,PHP 将会报错。

变量修改器

<p><!-- variable ~ escape --></p>

变量也可以被修改。

  • dump:使用 var_dump 输出变量。
  • escape:转义不良字符,例如标签。
  • json:将任何内容转换为有效的 JSON 标记。
  • lowercase:将字符串转换为小写版本。
  • trim:去除字符串的前后空白。
  • uppercase:将字符串转换为大写版本。

包含其他文件

<!-- include file.html -->
<!-- include file -->

然后 Yogurt 将尝试在 Yogurt 提供的目录中找到文件,如"入门"示例所示;第二个将自动追加提供的文件扩展名。

循环

<!-- for item in items -->
<p><!-- item --></p>
<!-- endfor -->

items 应该是数组或对象,但 item 可以是任何东西;只需记住,如果它不是 scalar,请通过连接名称来访问项的子项,例如:item.title

索引

在循环时,有时您需要知道项的索引——即它在数组或对象中的位置。可以通过在数组或对象名称后附加 _index 来访问项的索引,例如,对于名为 array 的数组,其索引为 array_index

如果和否则

<!-- if title -->
<p>Title exists.</p>
<!-- endif -->

<!-- if page is "some-page" -->
<p>Page is "some-page".</p>
<!-- elseif number === 1234 -->
<p>Number is "1234".</p>
<!-- else -->
<p>This is pretty cool.</p>
<!-- endif -->

支持的比较运算符有 =====!==!=>=<=<>><isisntisisnt 分别会被转换为 ==!=

值可以是 标量null 或变量。 booleanfloatintegernull 值可以加引号,但并非必须。

然而,字符串却必须加引号;如果不加引号,它们将被假定为变量。

待办事项

  • 更多的字符串修饰符。
  • 添加和移除自定义修饰函数。
  • 添加和移除自定义解析函数?
  • 缓存?

许可证

MIT 许可证;更多信息请参阅 许可证文件