gajus/brick

快速、易用且易于扩展的PHP模板系统。

2.1.0 2014-11-25 16:03 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:36:31 UTC


README

Build Status Coverage Status Latest Stable Version

快速、易用且易于扩展的PHP模板系统。

  • 纯PHP,无需学习新语法。
  • 框架无关,可与任何项目一起使用。

关于Brick

Brick不是一个将模板作为字符串解析/解析的模板引擎(想想Twig)。

有些人可能还记得Chad Minick的文章 "Simple PHP Template Engine" (2009年;这已经过去那么久了?)。我已经使用了基于Chad文章中概述的原则的抽象变体很长时间。Brick是这个系列中的最后一款。我对API、继承规则、作用域定义感到满意;它是完美的!

我在几个自由职业项目中使用了Brick,并将其对其他人开放。我正在寻找那些对PHP中模板处理应该是什么样的人。欢迎贡献者和批评。

– http://www.reddit.com/r/PHP/comments/2nduuc/brick/

特性

  • 处理找不到的模板文件
  • 防止 目录遍历攻击(在模板包含级别上)
  • 隔离模板执行作用域

以下示例以及包含的 单元测试 将让您开始。如果您觉得有需要澄清的部分,请 提出问题

概述

系统

System 类负责模板解析和作用域管理。

公共方法

子系统

Subsystem 类负责模板解析和作用域管理。

使用 System 实例构建的视图将使用 Subsystem 生成内部视图。这限制了模板对控制全局和其他敏感变量的访问。

公共方法

模板

Template 类负责隔离模板执行作用域、提取作用域变量和捕获输出缓冲区。

公共方法

入门指南

生成视图

// Set the absolute path to the folder containing templates.
$system = new \Gajus\Brick\System(__DIR__ . '/templates');
// Refer to the template using a path relative to the template folder.
echo $system->view('foo');

模板文件必须有 ".php" 扩展名。在引用模板时,不要包含文件扩展名。您可以更改扩展名的名称

$system->setTemplateExtension('.tpl.php');

视图作用域

  • $systemSubsystem 的一个实例。
  • $globals 是由同一个 System 实例产生的所有视图之间共享的变量。
  • 在生成视图时分配给视图的变量。

分配变量

作用域变量被提取到模板的执行上下文中,即模板可以将其作为常规变量访问。

// template_that_is_using_foo_variable.php
$foo;

作用域变量在生成视图时分配。

$system->view('template_that_is_using_foo_variable', ['foo' => 'bar']); // 'bar'

全局变量

使用同一个 System 实例生成的视图可以访问 $globals 变量。

$system->getGlobals(['foo' => 'bar']);
$system->view('template_that_is_using_foo_variable'); // 'bar'