2017 © Pedro PelĂĄez
 

library prophiler-psr7-middleware

PSR-7 middleware for Prophiler

image

bitexpert/prophiler-psr7-middleware

PSR-7 middleware for Prophiler

  • Monday, December 25, 2017
  • by shochdoerfer
  • Repository
  • 11 Watchers
  • 9 Stars
  • 1,047 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 6 Forks
  • 1 Open issues
  • 18 Versions
  • 3 % Grown

The README.md

prophiler-psr7-middleware

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., (*1)

Build Status Coverage Status, (*2)

Installation

The preferred way of installing bitexpert/prophiler-psr7-middleware is through Composer. Simply add bitexpert/prophiler-psr7-middleware as a dependency:, (*3)

composer.phar require bitexpert/prophiler-psr7-middleware

How to use the Prophiler PSR7 Middleware

Create the Prophiler toolbar:, (*4)

    $prophiler = new \Fabfuel\Prophiler\Profiler();
    $toolbar = new \Fabfuel\Prophiler\Toolbar($prophiler);

Set-up your PSR-7 middleware, e.g. by using zendframework/zend-stratigility:, (*5)

    $request = \Zend\Diactoros\ServerRequestFactory::fromGlobals();
    $response = \Zend\Diactoros\Response();

    $app = new \Zend\Stratigility\MiddlewarePipe();

Add the ProphilerMiddleware to the Middleware pipe:, (*6)

    $app->pipe(new \bitExpert\Http\Middleware\Psr7\Prophiler\ProphilerMiddleware($toolbar));

"Execute" the Middleware pipe:, (*7)

    $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:, (*8)

return [
    'middleware_pipeline' => [[
        'middleware' => bitExpert\Http\Middleware\Psr7\
            Prophiler\ProphilerMiddleware::class,
        'priority' => 11000,
    ]]
];

Add a factory definition to config/autoload/dependencies.global.php:, (*9)

return [
    'dependencies' => [
        'factories' => [
            bitExpert\Http\Middleware\Psr7\Prophiler\
                ProphilerMiddleware::class =>
                App\Middleware\ProphilerFactory::class
        ]
    ]
];

The \App\Middleware\ProphilerFactory implementation looks like this:, (*10)

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:, (*11)

$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:, (*12)

$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., (*13)

License

The Prophiler PSR7 Middleware is released under the Apache 2.0 license., (*14)

The Versions