Интеграция с PHP Debug Bar

Каков наилучший способ записать все запросы на журчание на панель отладки php?

Обычно это событие какого-то типа, которое я мог бы прослушать и передать данные сборщику для панели отладки. Тем не менее, жрет, кажется, нет никаких событий. Вместо этого он использует промежуточное программное обеспечение и обработчики, которые я не совсем понимаю, как бы я интегрировал с отладочной панелью для регистрации запросов и временной шкалы, информации о продолжительности выполнения на панели отладки.

0

Решение

Я думаю, что я в основном понял это.

Я создал свое промежуточное ПО и зарегистрировал его у клиента.

Кастомное промежуточное ПО.

use GuzzleHttp\Promise\PromiseInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Rocket\Cockpit\Facade\Container;
use Rocket\Moc\Debugbar\MocDebugBar;

class GuzzleHttpMiddleware {

/** @var callable  */
private $nextHandler;

/**
* @param callable $nextHandler Next handler to invoke.
*/
public function __construct(callable $nextHandler) {
$this->nextHandler = $nextHandler;
}

/**
* @param RequestInterface $request
* @param array            $options
*
* @return PromiseInterface
*/
public function __invoke(RequestInterface $request, array $options)
{
$fn = $this->nextHandler;
$debugbar = Container::get(MocDebugBar::class);

$debugbar['rest']->addRequest($request);

return $fn($request, $options)
->then(function (ResponseInterface $response) use ($request, $options) {

return $response;

});

}

}

Регистрация собственного промежуточного программного обеспечения с помощью стека обработчиков — используется контейнер PHP League.

// Register http client.
$this->getContainer()->share(Client::class,function() {

// In theory this "should" be available
$config = load_class('Config');

// Add debugbar middleware to handler stack.
$stack = HandlerStack::create();
$stack->after('prepare_body',function(callable $handler) {
return new GuzzleHttpMiddleware($handler);
},'debugbar');

$client = new Client([
'base_uri'=> $config->item('service_url'),
'handler'=> $stack,
]);

return $client;
},true);

Мне было трудно понять рабочий процесс обработчиков и обещаний, пока я на самом деле не изучал только библиотеку обещаний. Как только я это сделал, все стало намного понятнее.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]