decodelabs/horizon
Composer 安装命令:
composer require decodelabs/horizon
包简介
Simple HTML view containers
README 文档
README
Simple HTML view containers
Horizon provides a simple structure for building and rendering HTML views using the DecodeLabs\Tagged interfaces.
Installation
This package requires PHP 8.4 or higher.
Install via Composer:
composer require decodelabs/horizon
Usage
Programmatically build and render HTML views using the Page class:
use DecodeLabs\Horizon\Page; use DecodeLabs\Tagged as Html; $page = new Page(function($page) { $page->title = 'Hello, World!'; $page->setMeta('description', 'This is a test page'); $page->addLink( key: 'styles', rel: 'stylesheet', href: '/styles.css' ); $page->addLink( key: 'favicon', rel: 'icon', href: '/favicon.ico' ); $page->addBodyScript( key: 'bundle', src: '/bundle-45346534.js' ); $page->bodyTag->addClass('section-home'); yield Html::{'h1'}('Hello, World!'); yield Html::{'p'}('This is a test page'); });
Decorators
Horizon provides a simple decorator system for adding additional functionality to your pages.
Decorators must be findable by Archetype - either in DecodeLabs\Horizon\Decorator or in a namespace registered in the Archetype namespace map.
namespace DecodeLabs\Horizon\Decorator; use DecodeLabs\Horizon\Decorator; use DecodeLabs\Horizon\Page; class MyDecorator implements Decorator { public function decorate( Page $page, // Require parameter string $basePath // Decorator-specific parameter ): void { $page->title = 'My Decorated Page'; $page->addBodyScript( key: 'analytics', src: $basePath.'/analytics.js' ); } } $page = new Page(function($page) { yield Html::{'h1'}('Hello, World!'); yield Html::{'p'}('This is a test page'); }); $page->decorate('MyDecorator', '/base/path');
Harvest Transformer
Horizon includes a Harvest transformer that can be used to convert a Page instance into a PSR-7 HTTP Response during the Harvest request lifecycle.
Harvest Transformers should be managed by the HTTP Middleware that needs to transform Responses, for example Greenleaf will transparently call transform() for the return value of a Greenleaf Action.
The result is that you can return a Page instance from a Greenleaf Action and it will be automatically transformed into a PSR-7 Response.
use DecodeLabs\Greenleaf\Action; use DecodeLabs\Greenleaf\Action\ByMethodTrait; use DecodeLabs\Horizon\Harvest; class MyAction implements Action { use ByMethodTrait; public function get(): Page { return new Page(function() { yield 'My content'; }); } }
Licensing
Horizon is licensed under the MIT License. See LICENSE for the full license text.
decodelabs/horizon 适用场景与选型建议
decodelabs/horizon 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 660 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 03 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 decodelabs/horizon 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 decodelabs/horizon 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 660
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 17
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-03-14