brainlight / brainlight-php
Brainlight 模板引擎,适用于 PHP。
Requires
- php: ^8.1
README
Brainlight 是一个轻量级的模板系统,具有最少的逻辑模式。
这是 Brainlight 范式的 PHP 实现。
要求
- PHP >= 8.1
- Composer
安装
使用以下命令在 composer 项目中要求 Brainlight Php 包
composer require brainlight/brainlight-php
使用方法
创建一个新的 Brainlight 引擎实例
use Brainlight\BrainlightPhp\Engine; $engine = new Engine([ 'cacheDir' => __DIR__ . '/cache', 'templatesDir' => __DIR__, ]);
然后渲染任何 Brainlight 模板
echo $engine->render('templateName', [ 'title' => 'Homepage', ]);
请参考Brainlight 文档了解模板语法。
额外逻辑
Brainlight PHP 通过使用 Brainlight\BrainlightPhp\Logic
类和命名空间来支持具有额外逻辑的模板。
首先考虑在您的引擎配置中添加一个命名空间根
use Brainlight\BrainlightPhp\Engine; $engine = new Engine([ 'cacheDir' => __DIR__ . '/cache', 'templatesDir' => __DIR__, 'logicNamespace' => 'Logic', ]);
然后通过扩展 Brainlight\BrainlightPhp\Logic
创建一个新的逻辑类
namespace Logic; use Brainlight\BrainlightPhp\Logic; class Button extends Logic { // ... }
这样,在渲染 {{ >+ button }}
和 {{ &+ button }}
时,将加载类 Logic\Button
。
此外,这些标签内的模板名称将被转换为命名空间。所以 buttons.button-delete
将变成 Buttons\ButtonDelete
。
逻辑类必须实现 getVariables()
方法
namespace Logic; use Brainlight\BrainlightPhp\Logic; class Button extends Logic { protected function getVariables(array $parameters): array { return $parameters; } }
此函数的目的是修改传递给模板的参数。这些参数收集在 parameters
关联数组中。
可以使用 mandatory
数组属性设置强制参数,并使用 mandatorySlots
数组属性设置强制插槽
namespace Logic\Inclusions; use Brainlight\BrainlightPhp\Logic; class Page extends Logic { protected array $mandatory = [ 'title', ]; protected array $mandatorySlots = [ 'content', ]; // ... }
还可以通过设置其 template
属性来更改与逻辑类关联的默认模板
namespace Logic; use Brainlight\BrainlightPhp\Logic; class Button extends Logic { public ?string $template = 'buttons.custom-template'; // ... }
要从 PHP 脚本直接渲染具有额外逻辑的模板,请使用 render()
函数的第三个参数
$engine->render('button', [], true);
选项
引擎构造函数支持以下选项
cacheDir
类型:字符串
缓存模板存储的绝对路径。
此字段是必需的。
templatesDir
类型:混合
包含模板的目录的绝对路径。它也接受路径数组。
如果提供 false
,则 render()
方法将接受一个完全限定的文件名而不是模板名称。
示例
use Brainlight\BrainlightPhp\Engine; $engine = new Engine([ 'cacheDir' => __DIR__ . '/cache', 'templatesDir' => false, ]); echo $engine->render(__DIR__ . '/templateName.brain');
默认值:false
partialsDir
类型:混合
包含部分模板的目录的绝对路径,用于包含和扩展。它也接受路径数组。
如果提供 false
,则模板引擎将考虑包含标签的模板名称为完全限定的文件名而不是模板名称。
如果提供 null
,则部分模板将根据与 'templatesDir'
相同的规则集解决。
默认值:null
logicNamespace
类型:字符串|布尔值
用于解析额外逻辑类的命名空间根。
默认值:false
extension
类型:字符串
Brainlight 模板文件的扩展名。
默认值:'brain'
转义选项
以下选项(带默认值)应用于使用 PHP 函数 htmlspecialchars 执行的任何转义操作
[ 'escapeFlags' => ENT_QUOTES, 'escapeEncoding' => 'UTF-8', 'escapeDoubleEncode' => true, ]
许可
Brainlight PHP 是开源软件,许可协议为 MIT 许可协议