brainlight/brainlight-php

Brainlight 模板引擎,适用于 PHP。

v1.3.0 2023-03-31 10:00 UTC

This package is auto-updated.

Last update: 2024-09-30 01:52:20 UTC


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 许可协议