php-middleware / php-debug-bar
基于PSR-15和PSR-7的PHP调试条PSR-15中间件
Requires
- php: ^7.3 || ^8.0
- maximebf/debugbar: ^1.4
- psr/container-implementation: ^1.0 || ^2.0
- psr/http-factory-implementation: ^1.0
- psr/http-message-implementation: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- laminas/laminas-diactoros: ^2.0
- laminas/laminas-servicemanager: ^3.3.2
- mezzio/mezzio: ^3.0
- mezzio/mezzio-fastroute: ^3.0.1
- mikey179/vfsstream: ^1.6.8
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.1.4
- slim/slim: ^3.0
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的现代化框架(请参阅相关链接)。