PHP Debug bar middleware with PSR-7
This middleware provide framework-agnostic possibility to attach PHP Debug bar to your response (html on non-html!).
composer require php-middleware/php-debug-bar
To build this middleware you need to injecting inside PhpDebugBarMiddleware
instance DebugBar\JavascriptRenderer
(you can get it from DebugBar\StandardDebugBar
) and add middleware to your middleware runner. Or use default factory.
$debugbar = new DebugBar\StandardDebugBar();
$debugbarRenderer = $debugbar->getJavascriptRenderer('/phpdebugbar');
$middleware = new PhpMiddleware\PhpDebugBar\PhpDebugBarMiddleware($debugbarRenderer);
// OR
$factory = PhpMiddleware\PhpDebugBar\PhpDebugBarMiddlewareFactory();
$middleware = $factory();
$app = new MiddlewareRunner();
$app->add($middleware);
$app->run($request, $response);
You don't need to copy any static assets from phpdebugbar vendor!
Use mtymek/expressive-config-manager and add
PhpMiddleware\PhpDebugBar\ConfigProvider
class name:
$configManager = new \Zend\Expressive\ConfigManager\ConfigManager([
\PhpMiddleware\PhpDebugBar\ConfigProvider::class,
new \Zend\Expressive\ConfigManager\PhpFileProvider('config/autoload/{{,*.}global,{,*.}local}.php'),
]);
more about config manager.
Add existing factory to container:
$container['debugbar_middleware'] = new PhpMiddleware\PhpDebugBar\PhpDebugBarMiddlewareFactory();
and add middleware from container to app:
$app->add($app->getContainer()->get('debugbar_middleware'));
Put array with configuration into config
service in your container:
<?php
return [
'phpmiddleware' => [
'phpdebugbar' => [
'javascript_renderer' => [
'base_url' => '/phpdebugbar',
],
'collectors' => [
DebugBar\DataCollector\ConfigCollector::class, // Service names of collectors
],
'storage' => null, // Service name of storage
],
],
];
Middleware tested on:
And any other modern framework supported middlewares and PSR-7.