packfire/mustache

该包已废弃,不再维护。未建议替代包。

PHP Mustache 实现

1.2.4 2014-03-26 13:52 UTC

This package is not auto-updated.

Last update: 2021-05-23 22:10:52 UTC


README

Packfire Mustache

Packfire Mustache 是为 Packfire 定制的一个轻量级 Mustache 实现。在采用 Mustache 之前,Packfire 一直使用一个简单的标记替换模板引擎,该引擎使用单个花括号来表示标记。

<h1>
  {title}
</h1>
<p>{message}</p>

然而,这个简单的模板解析器过于原始,不支持 Mustache 所支持的嵌套和列表。因此,Packfire 采用了 Mustache 模板引擎作为其默认模板引擎。

然而,由 bobthecow 实现的 PHP Mustache 实现 被发现过于笨重,因此我决定自己实现一个。Mustache 已经通过提供的规范测试进行了测试。

Packfire Mustache 使用双花括号来表示标记,默认支持转义,并支持嵌套的块标记

Hello {{name}}
You have just won ${{value}}!
{{#in_ca}}
    Well, ${{taxed_value}}, after taxes.
{{/in_ca}}

要了解更多关于 Packfire Mustache 的工作原理,您可以参考 原始 Mustache 手册,因为 Mustache 是设计为平台无关和跨平台的。

## 安装

Packfire Mustache 可以通过 Composer 安装

{
	"require": {
		"packfire/mustache": "1.0.*"
	}
}

然后运行 Composer 安装命令

$ composer install

## 使用

一个快速示例

use Packfire\Template\Mustache\Mustache;

$m = new Mustache('Hello {{planet}}!');
echo $m->parameters(array('planet' => 'World'))->render();
// "Hello World!"

以及一个更深入的示例--这是标准的 Mustache 模板

Hello {{name}}
You have just won ${{value}}!
{{#in_ca}}
    Well, ${{taxed_value}}, after taxes.
{{/in_ca}}

以及相关的 Mustache

use Packfire\Template\Mustache\Mustache;

class Chris extends Mustache {
    public $name = "Chris";
    public $value = 10000;
    
    public function taxed_value() {
        return $this->value - ($this->value * 0.4);
    }
    
    public $in_ca = true;
}

像这样渲染它

$chris = new Chris;
echo $chris->template($template)->render();

这是同样的东西,但用不同的方式

创建一个视图对象--它也可以是一个关联数组,但那些在执行函数方面并不太好

class Chris {
    public $name = "Chris";
    public $value = 10000;
    
    public function taxed_value() {
        return $this->value - ($this->value * 0.4);
    }
    
    public $in_ca = true;
}

然后渲染它

use Packfire\Template\Mustache\Mustache;

$chris = new Chris();
$m = new Mustache();
echo $m->template($template)->parameters($chris)->render();