bitexpert / prophiler-psr7-middleware
PSR-7 middleware for Prophiler
Installs: 9 276
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 13
Forks: 7
Open Issues: 1
Requires
- php: ^7.0
- bitexpert/slf4psrlog: ^0.1.0
- fabfuel/prophiler: ^1.6
- psr/http-message: ^1.0
- zendframework/zend-stratigility: ^2.0
Requires (Dev)
- bitexpert/phing-securitychecker: ^0.3.1
- monolog/monolog: ^1.14.0
- phing/phing: ^2.8.0
- phpdocumentor/phpdocumentor: ^2.8
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ^2.3
This package is auto-updated.
Last update: 2021-01-23 12:08:22 UTC
README
This package provides a slim PSR-7 middleware implementation based on the zendframework/zend-stratigility package. The middleware is responsible for "adding" the Prophiler Toolbar output to the Response object.
Installation
The preferred way of installing bitexpert/prophiler-psr7-middleware
is through Composer. Simply add
bitexpert/prophiler-psr7-middleware
as a dependency:
composer.phar require bitexpert/prophiler-psr7-middleware
How to use the Prophiler PSR7 Middleware
Create the Prophiler toolbar:
$prophiler = new \Fabfuel\Prophiler\Profiler(); $toolbar = new \Fabfuel\Prophiler\Toolbar($prophiler);
Set-up your PSR-7 middleware, e.g. by using zendframework/zend-stratigility:
$request = \Zend\Diactoros\ServerRequestFactory::fromGlobals(); $response = \Zend\Diactoros\Response(); $app = new \Zend\Stratigility\MiddlewarePipe();
Add the ProphilerMiddleware to the Middleware pipe:
$app->pipe(new \bitExpert\Http\Middleware\Psr7\Prophiler\ProphilerMiddleware($toolbar));
"Execute" the Middleware pipe:
$response = $app($request, $response);
How to add the Prophiler PSR7 Middleware to an Expressive app
Expressive 1.x
Register a pre_routing middleware in config/autoload/middleware-pipeline.local.php
:
return [ 'middleware_pipeline' => [[ 'middleware' => bitExpert\Http\Middleware\Psr7\ Prophiler\ProphilerMiddleware::class, 'priority' => 11000, ]] ];
Add a factory definition to config/autoload/dependencies.global.php
:
return [ 'dependencies' => [ 'factories' => [ bitExpert\Http\Middleware\Psr7\Prophiler\ ProphilerMiddleware::class => App\Middleware\ProphilerFactory::class ] ] ];
The \App\Middleware\ProphilerFactory
implementation looks like this:
namespace App\Middleware; use Interop\Container\ContainerInterface; use Fabfuel\Prophiler\Profiler; use Fabfuel\Prophiler\Toolbar; use bitExpert\Http\Middleware\Psr7\Prophiler\ProphilerMiddleware; class ProphilerFactory { public function __invoke(ContainerInterface $container) { $prophiler = new Profiler(); $toolbar = new Toolbar($prophiler); return new ProphilerMiddleware($toolbar); } }
Expressive 2.x (Programmatic Pipelines)
Adding the following code snippet to the config/pipeline.php
file:
$app->pipe(ErrorHandler::class); $debug = $app->getContainer()->get('config')['debug'] ?? false; if ($debug) { $prophiler = new \Fabfuel\Prophiler\Profiler(); $toolbar = new \Fabfuel\Prophiler\Toolbar($prophiler); $middleware = new \bitExpert\Http\Middleware\Psr7\Prophiler\ProphilerMiddleware($toolbar); $app->pipe($middleware); } $app->pipe(ServerUrlMiddleware::class);
Configure Prophiler
By default Prophiler will not log or profile anything. You can add custom benchmarks by adding the following code snippet to the code you want to profile:
$profiler->start('\My\Class::doSomeOtherThing', ['additional' => 'information'], 'My Component'); // here be your custom code $profiler->stop();
In addition to that Prophiler offers a lot of adapters and decorators for 3rd party tools and libraries.
License
The Prophiler PSR7 Middleware is released under the Apache 2.0 license.