php-middleware/php-debug-bar

基于PSR-15和PSR-7的PHP调试条PSR-15中间件

4.2.0 2022-02-22 13:34 UTC

This package is not auto-updated.

Last update: 2024-09-17 19:44:15 UTC


README

PHP Debug Bar作为框架无关的PSR-15中间件,使用PSR-7消息,由PSR-17消息工厂创建。同时也提供了PSR-11容器可调用工厂

以框架无关的方式将PHP Debug Bar附加到您的响应(html或非html!)

安装

composer require --dev php-middleware/php-debug-bar

要构建中间件,您需要在PhpDebugBarMiddleware中注入DebugBar\JavascriptRenderer(您可以从DebugBar\StandardDebugBar获取它),并将其添加到您的中间件运行器中

$debugbar = new DebugBar\StandardDebugBar();
$debugbarRenderer = $debugbar->getJavascriptRenderer('/phpdebugbar');
$middleware = new PhpMiddleware\PhpDebugBar\PhpDebugBarMiddleware($debugbarRenderer, $psr17ResponseFactory, $psr17StreamFactory);

// or use provided factory
$factory = new PhpMiddleware\PhpDebugBar\PhpDebugBarMiddlewareFactory();
$middleware = $factory($psr11Container);

$app = new MiddlewareRunner();
$app->add($middleware);
$app->run($request, $response);

您不需要从phpdebugbar供应商复制任何静态资源!

如何强制禁用或启用PHP调试条?

有时您可能需要控制何时启用或禁用PHP调试条

  • 自定义内容协商,
  • 允许调试重定向响应。

我们允许您使用X-Enable-Debug-Bar: false头部、cookie或请求属性来禁用附加phpdebugbar。要强制启用,只需发送带有X-Enable-Debug-Bar头部、cookie或请求属性且值为true的请求。

PSR-17

此包不需要任何PSR-7实现 - 您需要自行提供。中间件需要ResponseFactory和StreamFactory接口。请参阅现有接口列表

...以及PSR-11

如果您使用提供的PSR-11工厂,则您的容器必须将服务注册为PSR-17接口的名称。例如,对于laminas-diactoros实现和Pimple

$container[Psr\Http\Message\ResponseInterface::class] = new Laminas\Diactoros\ResponseFactory();
$container[Psr\Http\Message\StreamFactoryInterface::class] = new Laminas\Diactoros\StreamFactory();

如何在Mezzio上安装?

您需要注册PhpMiddleware\PhpDebugBar\ConfigProvider并将提供的中间件管道化

$app->pipe(\PhpMiddleware\PhpDebugBar\PhpDebugBarMiddleware::class);

更多内容请参阅Mezzio 文档

如何在Slim 3上安装?

在容器中注册工厂

foreach (ConfigProvider::getConfig()['dependencies']['factories'] as $key => $factory) {
    $container[$key] = new $factory();
}

并将容器中的中间件添加到应用中

$app->add(
    $app->getContainer()->get(\PhpMiddleware\PhpDebugBar\PhpDebugBarMiddleware::class)
);

如何使用现有工厂进行配置?

将包含配置的数组放入容器中的PhpMiddleware\PhpDebugBar\ConfigProvider服务

return [
    'phpmiddleware' => [
        'phpdebugbar' => [
            'javascript_renderer' => [
                'base_url' => '/phpdebugbar',
            ],
            'collectors' => [
                DebugBar\DataCollector\ConfigCollector::class, // Service names of collectors
            ],
            'storage' => null, // Service name of storage
        ],
    ],
];

您可以通过合并默认配置与自己的配置来覆盖现有配置(示例)

return array_merge(PhpMiddleware\PhpDebugBar\ConfigProvider::getConfig(), $myOverritenConfig);

它适用于任何现代PHP框架!

中间件已在以下框架上测试

以及任何其他支持PSR-17中间件和PSR-7的现代化框架(请参阅相关链接)