PHP 的组件渲染器

v0.0.1 2024-03-07 20:16 UTC

This package is auto-updated.

Last update: 2024-09-07 21:24:42 UTC


README

PHP 的组件渲染器

Mosaic 是一款先进的 PHP 服务器端渲染引擎。它提供了一种高效灵活的方法来构建和渲染 UI 组件。专门为 PHP 开发者设计,它可以与语言的本生能力无缝结合,从而提供丰富、面向组件的开发体验。

主要优势

专为 PHP 开发者设计

  • PHP 本生经验:针对 PHP 设计,无需遵循 MVC 模型,Mosaic 可以无缝集成到 PHP 项目中,利用语言的优势。

灵活的组件类型

  • 多功能的组件策略:Mosaic 支持闭包、片段和可渲染对象,促进模块化和可重用设计实践,而不仅仅是模板渲染。

可扩展和可定制

  • 开箱即用的自定义策略:该库允许自定义渲染策略,以实现无与伦比的灵活性,非常适合具有独特渲染需求的工程。

轻量级和性能高

  • 最小开销:设计得非常精简,Mosaic 提供了卓越的性能,适用于从小型到大型规模的各个项目。

专注于服务器端渲染

  • 针对服务器端效率优化:专注于服务器端渲染,它利用服务器能力来实现快速响应时间和有效资源使用。

安装

通过 Composer 安装

composer require robertkleinschuster/mosaic

用法

以下是支持组件类型的示例

字符串组件

处理简单的字符串

$renderer->render("Hello, world");

默认情况下,字符串将被转义,要渲染 html,请使用片段。

片段组件

组合 UI 片段

$fragment = $renderer->fragment('<div>Hello, world</div>');
$renderer->render($fragment);

闭包组件

动态渲染 PHP 闭包

$renderer->render(function ($data) {
    return "Hello, " . $data['name'];
}, ['name' => 'world']);

返回值被评估为组件。

可迭代组件

遍历组件的可迭代对象

$items = ['item1', 'item2', 'item3'];
$renderer->render($items);

这通常与 PHP 生成器语法一起使用

$items = ['item1', 'item2', 'item3'];
$renderer->render(function() {
    yield "first\n",
    yield "second\n",
    yield "third\n",
});

可渲染组件

利用实现 Renderable 接口的对象

class MyComponent implements \Mosaic\Renderable {
    public function render(\Mosaic\Renderer $renderer, $data) {
        yield $renderer->fragment("<div>Hello, {$data['name']}</div>");
    }
}
$renderer->render(new MyComponent(), ['name' => 'world']);

在这个示例中,使用 PHP 生成器语法生成子 HTML 片段。

属性组件

使用 PHP-8 属性将闭包包装在另一个组件中。

#[Attribute]
class MyWrapper implements \Mosaic\RenderableAttribute {
    public function render(\Mosaic\Renderer $renderer, mixed $children, mixed $data){
        return $renderer->fragment(<<<HTML
<p class="wrapper">
    {$renderer->render($children, $data)}
</p>
HTML
);
    }
}
$renderer->render(#[MyWrapper] fn() => 'Hello world!')

字符串 "Hello world!" 现在将在 MyWrapper 组件定义的段落中渲染。

向组件传递参数

$renderer->render(fn(string $name) => "Hello $name!", name: 'world')

扩展 Mosaic

其设计允许简单扩展,使开发者能够创建自定义渲染策略、辅助工具等,以满足特定应用需求。

运行测试

要执行测试套件,请在您的 CLI 中运行适当的命令。

贡献

非常感谢贡献,无论是通过问题报告、功能建议还是直接代码贡献。

许可

在 MIT 许可证下分发。有关更多信息,请参阅 LICENSE 文件。

获取帮助

对于问题、问题或帮助,请打开 GitHub 上的问题。