susros/html-template-engine

HTMLTemplateEngine 是一个简单、轻量级的 PHP 模板引擎库。

v2.0.0 2018-11-20 07:24 UTC

This package is auto-updated.

Last update: 2024-09-20 20:26:27 UTC


README

HTML Template Engine

HTMLTemplateEngine 是一个简单、轻量级的 PHP 模板引擎库。

要求

PHP 版本 5.3 或更高。

安装

HTMLTemplateEngine 可以手动下载或使用以下命令克隆:

git clone git@github.com:Susros/HTMLTemplateEngine.git

HTMLTemplateEngine 也可在 Packagist 上找到。使用 composer 安装,请将以下行添加到您的 composer.json 文件中

"susros/html-template-engine" : "^2.0.0"

或者直接运行

composer require susros/html-template-engine

模板

模板文件的扩展名可以是 tpl 或 html。模板文件都组织在不同的文件夹中,称为 packages。在每个 package 中,可以只包含模板文件或文件夹来组织或分类模板文件。

以下是模板的目录结构示例

├── View
│   ├── package1
│   │   ├── **/*.tpl
│   ├── package2
│   │   ├── **/*.tpl
└── └── **/*.tpl

模板变量

模板变量是实际值的占位符。可以给变量分配默认值。如果没有声明默认值,则默认使用空字符串。

示例

<p>Hello, {$name : "World"}</p>
<p>{$msg}</p>

模板函数

模板函数用于告诉模板引擎在执行模板时需要执行哪些操作。支持两种函数。

dup

'dup' 模板函数用于告诉模板引擎在将值分配给模板的变量后,复制模板。

例如

<select>
	{#dup : <option value="{$id}">{$name}</option> ;}
</select>

loop

'loop' 模板函数用于告诉模板引擎生成模板的 'n' 份副本。

例如

{#loop(5) : <p>{$greeting}</p> ;}

用法

首先,包含 HTMLTemplateEngine 类文件。HTMLTemplateEngine 使用命名空间 HTMLTemplateEngine。

require_once "path/to/HTMLTemplateEngine.php";

在使用 HTMLTemplateEngine 之前,请确保设置模板文件的目录。默认情况下,它设置为应用程序的当前目录。

例如

HTMLTemplateEngine::$DIRECTORY = $_SERVER["DOCUMENT_ROOT"] . "/view";

然后,可以通过 HTMLTemplateEngine 对象创建器传递模板文件

$myTemplate = new HTMLTemplateEngine("template_name.tpl");

您可以通过使用包名作为静态方法调用来获取模板:HTMLTemplateEngine::PACKAGE_NAME("TEMPLATE_NAME")

例如,要获取上面模板部分示例中 package1 的 cat1 中的 template1.tpl

$myTemplate = new HTMLTemplateEngine(HTMLTemplateEngine::package1("cat1/template1"));

一旦模板引擎已初始化,现在可以像访问对象的变量一样访问模板文件中的模板变量。模板变量可以分配为单个值或数组。

如果我们查看上面模板变量部分的示例

$myTemplate->msg = "Good Morngin!";

模板的输出将是

<p>Hello, World</p>
<p>Good Morning!</p>

变量 $name 没有分配。因此,使用默认值 "World"。变量 $msg 分配了值 "Good Morngin!",因此它被使用。否则,将使用空字符串。

至于模板函数 'dup',HTMLTemplateEngine 会在执行模板并使用变量值时自动识别。由于我们想复制模板并为每个复制的模板分配不同的值,因此在这种情况下需要使用数组。例如,使用上面的 dup 模板

$myTemplate->name = array(“John”, “Will”, “Josh”, “Kelvin”);
$myTemplate->id = array(1,2,3,4);

输出将是

<select>
	<option value=“1”>John</option>
	<option value=“2”>Will</option>
	<option value=“3”>Josh</option>
	<option value=“4”>Kelvin</option>
</select>

与 'dup' 模板函数类似,HTMLTemplateEngine 会在执行模板时自动识别 'loop' 函数。它会生成指定数量的模板副本。例如

$myTemplate->greeting = "Hello, World!";

输出将是

<p>Hello, World!</p> 
<p>Hello, World!</p> 
<p>Hello, World!</p> 
<p>Hello, World!</p> 
<p>Hello, World!</p>