rizalmf/slim-simple-profiler

用于 Slim Framework 3 的简单中间件进行性能分析

v1.0.0 2021-07-06 12:39 UTC

This package is auto-updated.

Last update: 2024-09-06 21:54:00 UTC


README

用于 Slim Framework 3 的简单中间件进行性能分析。实现了优秀的库 maximebf/debugbar。受到 Codeigniter 性能分析器的启发。

屏幕截图

1 2

目录

安装

通过 "composer require" 设置

composer require rizalmf/slim-simple-profiler

使用方法

use Simple\Profiler\Profiler;
use Simple\Profiler\Container;

require_once __DIR__ . '/vendor/autoload.php'; // example path

$app = new \Slim\App();

// add middleware
$app->add(new Profiler(new Container()));

启用/禁用暗黑模式

设置暗黑模式的 HTML 格式。默认:true

// ...
$container = new Container();
$container->setDarkMode(false);

$app->add(new Profiler($container));

Eloquent/ORM

将 \Illuminate\Database\Capsule\Manager 注册到容器中

//-------- OPTION ONE --------//
// in case you use static Manager

// ...
$DB = new \Illuminate\Database\Capsule\Manager();
$DB->addConnection($settings['your_eloquent_cfg']);

$DB->setAsGlobal();
$DB->bootEloquent();

// register to container
$container->setEloquentManager($DB);

// add middleware
$app->add(new Profiler($container));

//-------- OPTION TWO --------//
// in case you set eloquent to slim container

// ...
$settings = require __DIR__.'/../config/settings.php';
$app = new \Slim\App($settings);

$appContainer = $app->getContainer();

$appContainer['capsule'] = function ($c) {
    $capsule = new \Illuminate\Database\Capsule\Manager;
    $capsule->addConnection($c->get('settings')['your_eloquent_cfg']);

    $capsule->setAsGlobal();
    $capsule->bootEloquent();

    return $capsule;
};

// register capsule to container
$container->setEloquentManager($appContainer['capsule']);

// add middleware
$app->add(new Profiler($container));

Doctrine/ORM

将 \Doctrine\DBAL\Logging\DebugStack 注册到容器中

// ...
$settings = require __DIR__.'/../config/settings.php';
$app = new \Slim\App($settings);

$appContainer = $app->getContainer();

$appContainer['dao'] = function ($c) {
    $settings = $c->get('settings');

    $config = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(
        $settings['doctrine']['meta']['entity_path'],
        $settings['doctrine']['meta']['auto_generate_proxies'],
        $settings['doctrine']['meta']['proxy_dir'],
        $settings['doctrine']['meta']['cache'],
        false
    );
    return \Doctrine\ORM\EntityManager::create($settings['doctrine']['connection'], $config);
};

// first.. you have to bind DebugStack to your entityManager
$logger = new \Doctrine\DBAL\Logging\DebugStack();
$appContainer['dao']->getConnection()
    ->getConfiguration()
    ->setSQLLogger($logger);

// register DebugStack to container
$container->setDoctrineStack($logger);

// add middleware
$app->add(new Profiler($container));

GuzzleHttp

通过 Profiler::guzzleStack() 捕获 guzzlehttp 事件

// ...

$stack = \GuzzleHttp\HandlerStack::create();
$stack->push(\Simple\Profiler\Profiler::guzzleStack());

// set options \GuzzleHttp\Client 
$options['handler'] = $stack;
$client = new \GuzzleHttp\Client($options);

设置响应格式

默认:Container::HTTP_FORMAT

// ...
$container = new Container();

// response as text/html
$container->setResponseFormat(Container::HTTP_FORMAT);

// response as application/json content-type
$container->setResponseFormat(Container::JSON_FORMAT);

$app->add(new Profiler($container));

LICENSE

MIT 许可证 (MIT) 版权所有 (c) 2021 Rizal Maulana Fahmi