定制 decodelabs/horizon 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

decodelabs/horizon

Composer 安装命令:

composer require decodelabs/horizon

包简介

Simple HTML view containers

README 文档

README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 decodelabs/horizon 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 660
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 17
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-03-14