Skip to content
Prophiler PSR7 Middleware
PHP
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/bitExpert/Http/Middleware/Psr7/Prophiler
tests
.coveralls.yml
.gitignore
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
LICENSE
README.md
build.xml
composer.json
composer.lock
phpdoc.dist.xml
phpunit.xml.dist

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.

Build Status Coverage Status

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.

You can’t perform that action at this time.