torohill/php-template

一个非常基础的模板类,使用PHP作为模板语言。

2.1.1 2020-02-17 00:03 UTC

This package is auto-updated.

Last update: 2024-09-14 11:45:42 UTC


README

一个非常基础的模板库,使用PHP作为模板语言。

安装

将以下内容添加到您的composer.json文件的requires部分,然后运行composer install

"torohill/php-template": "2.*"

要求

PHP >= 5.3

使用

  1. 创建一个\PhpTemplate\Template对象。
  2. 将模板变量分配为成员变量。
  3. 调用Template->execute()以获取渲染的模板。

还可以使用静态Template::render()方法在一次调用中分配变量并执行。

示例用法

example.php

<?php
require_once 'vendor/autoload.php'; // Require composer autoloader

$t = new \PhpTemplate\Template('hello.txt.php');
$t->greeting = 'Hello';
$t->who = 'world';

echo $t->execute();

// Alternatives:
// echo $t->execute(array('greeting' => 'Hello', 'who' => 'world'));
// echo $t->set(array('greeting' => 'Hello', 'who' => 'world'))->execute();
// echo \PhpTemplate\Template::render('hello.txt.php', array('greeting' => 'Hello', 'who' => 'world'));

hello.txt.php

<?= $greeting ?>, <?= $who ?>!

输出

Hello, world!

配置

以下配置选项可用

  • path - 模板文件的默认基本路径。
  • suffix - 模板文件的默认后缀。
  • escape - 一个对象数组,实现了\PhpTemplate\Escape\EscapeInterface,将用于转义值。

可以通过传递一个关联数组的形式设置配置选项,该数组作为选项传递给静态Template::setConfig()方法。然后,这些选项将应用于所有实例化的Template对象。

转义值

实现了\PhpTemplate\Escape\EscapeInterface的对象可以使用Template::addEscape()(或使用Template::setConfig())添加到配置中。然后在模板内部调用$this->escape()以转义值。可以使用\PhpTemplate\Escape\HtmlEntitiesEscape类来转义HTML实体。

例如

example.php

<?php
require_once 'vendor/autoload.php'; // Require composer autoloader

use \PhpTemplate\Template;
use \PhpTemplate\Escape\HtmlEntitiesEscape;

Template::addEscape(new HtmlEntitiesEscape);

$t = new \PhpTemplate\Template('hello.html.php');
$t->greeting = '<b>Hello<b>';
$t->who = 'world';

echo $t->execute();

hello.html.php

<?= $this->escape($greeting) ?>, <i><?= $who ?></i>!

输出

&lt;b&gt;Hello&lt;b&gt;, <i>world</i>!

包含子模板

以下方法可以用于在模板中包含另一个模板

<?= static::render('foo.php', array('foo'=>'bar')) ?>

使用此方法,只有作为第二个参数传递的变量在foo.php中可用。使用static关键字意味着在原始execute()调用所针对的类上调用render()。或者,您可以使用self::render(),这将调用包含模板文件的类上的render()(这通常会是基础Template类)。

<?= $this->subRender('foo.php') ?>

使用subRender()将当前模板的所有模板变量传递给下一个模板。它不会传递当前模板文件内定义的任何本地变量。

<?= static::objRender('Template', array('foo.php'), array('foo'=>'bar')) ?>

使用objRender()实例化由第一个参数指定的类模板,将第二个数组参数传递给类构造函数(作为单独的参数),并将第三个参数分配为模板变量。

<?= include $this->getFileName('foo.php') ?>

此方法在当前模板的相同作用域中包含下一个模板。这意味着模板变量以及当前模板中定义的本地变量都将可用。调用$this->getFileName()确保在包含下一个模板时使用正确的路径和后缀(见配置部分)。

测试

单元测试尚未实现...

贡献

报告错误并向https://github.com/torohill/php-template/提交拉取请求。

许可证

PHP Templates在MIT许可证下发布,有关详细信息,请参阅LICENSE文件。