snicco/http-routing-bundle

v2.0.0-beta.9 2024-09-07 14:27 UTC

README

codecov Psalm Type-Coverage Psalm level PhpMetrics - Static Analysis PHP-Versions

WordPress 扩展配置了独立的 snicco/http-routing 库,以便在基于 snicco/kernel 的应用程序中使用。

安装

composer install snicco/http-routing-bundle

配置

此扩展具有广泛的配置选项

如果这些文件在您的配置目录中不存在,则首次以开发模式启动内核时将复制默认配置。

HttpRoutingBundle 添加到您的 bundles.php 配置文件中。

<?php
// /path/to/configuration/bundles.php

use Snicco\Bundle\HttpRouting\HttpRoutingBundle;

return [
    
    'bundles' => [
        Snicco\Component\Kernel\ValueObject\Environment::ALL => [
            HttpRoutingBundle::class
        ]   
    ]   
];

使用方法

此扩展提供了应使用的主要服务

  • HttpKernelRunner: 在正确的时间将当前请求发送到您的应用程序。此类作为HTTP请求-响应周期的入口点。
  • WPAdminMenu: 使用由您的路由定义配置的 AdminMenu,以便将其与 WordPress 管理菜单集成。

以下是一个插件引导文件的示例

<?php

use Snicco\Bundle\HttpRouting\HttpKernelRunner;
use Snicco\Bundle\HttpRouting\WPAdminMenu;
use Snicco\Component\Kernel\Kernel;

// Create kernel

/**
 * @var Kernel $kernel 
 */
$kernel->boot();

/**
 * @var HttpKernelRunner $runner
 */
$runner = $kernel->container()->make(HttpKernelRunner::class);

$is_admin = is_admin();

$runner->listen($is_admin);

if ($is_admin) {
    /**
     * @var WPAdminMenu $admin_menu
     */
    $admin_menu = $kernel->container()->make(WPAdminMenu::class);
    $admin_menu->setUp('my-plugin-text-domain');
}

请求和响应

此扩展负责在 WordPress 请求生命周期中的正确时刻运行 snicco/http-routing 库的中间件管道。

可以处理三种类型的请求

  • API请求,URI路径以您的 路由配置 中定义的API路径前缀开始的请求。
  • 管理请求,前往WordPress管理区域的请求。
  • 前端请求,所有其他请求。

HttpKernelRunner::listen() 方法根据当前请求类型设置适当的钩子,然后将请求通过您的应用程序。

您的所有中间件和控制器可以返回三种类型的响应

  1. DelegatedResponse,带有应发送的标头
  2. DelegatedResponse,不带标头
  3. 任何其他 PSR-7 响应

根据当前请求类型,以下是对每种响应类型发生的情况

  • API请求 / 前端请求
  • 管理请求

中间件

此扩展提供了一组可以在您的应用程序中使用的 PSR-15 中间件

  • ErrorsToExceptions: 将中间件管道中的所有错误转换为适当的异常。强烈推荐。
  • SetUserId: 将当前 WordPress 用户的用户 ID 添加到请求中。
  • SimpleTemplating:添加了一个简单的中间件来渲染ViewResponses,其中视图名称必须是一个绝对路径。

错误处理

此捆绑包自动配置了由snicco/http-routing使用的snicco/psr7-error-handler库。

您可以使用http_error_handling配置来配置此行为。

所有在您的中间件管道中的异常都将自动处理。WordPress核心代码和插件完全不受此影响。

贡献

此存储库是Snicco项目的开发存储库的只读分支。

以下是您如何进行贡献的方式.

报告问题和发送拉取请求

请在Snicco monorepo中报告问题。

安全

如果您在BetterWPCache中发现安全漏洞,请遵循我们的披露程序