torohill / php-template
一个非常基础的模板类,使用PHP作为模板语言。
Requires
- php: >=5.3
README
一个非常基础的模板库,使用PHP作为模板语言。
安装
将以下内容添加到您的composer.json文件的requires部分,然后运行composer install。
"torohill/php-template": "2.*"
要求
PHP >= 5.3
使用
- 创建一个
\PhpTemplate\Template对象。 - 将模板变量分配为成员变量。
- 调用
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>!
输出
<b>Hello<b>, <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文件。