public function boot()
{
$app = $this->di['app'];
$debugbar = $this->di['debugbar'];
$router = $this->di['router'];
$eventsManager = $app->getEventsManager();
if (!is_object($eventsManager)) {
$eventsManager = new Manager();
}
if ($app instanceof Micro) {
$eventsManager->attach('micro:beforeExecuteRoute', function () use($router) {
ob_start();
});
$eventsManager->attach('micro:afterExecuteRoute', function ($event, $app) use($debugbar) {
$response = $app->response;
if (null === ($returned = $app->getReturnedValue())) {
$buffer = ob_get_clean();
$response->setContent($buffer);
$response = $debugbar->modifyResponse($response);
$response->send();
} elseif (is_object($returned) && $returned instanceof ResponseInterface) {
$debugbar->modifyResponse($returned);
}
});
} elseif ($app instanceof Application) {
$eventsManager->attach('application:beforeSendResponse', function ($event, $app, $response) use($debugbar) {
$debugbar->modifyResponse($response);
});
}
$eventsManager->attach('application:afterStartModule', function ($event, $app, $module) use($debugbar) {
$debugbar->attachServices();
});
$app->setEventsManager($eventsManager);
$this->safeCheck();
$debugbar->boot();
}