Barryvdh\Debugbar\LaravelDebugbar::boot PHP Метод

boot() публичный Метод

Boot the debugbar (add collectors, renderer and listener)
public boot ( )
    public function boot()
    {
        if ($this->booted) {
            return;
        }
        /** @var \Barryvdh\Debugbar\LaravelDebugbar $debugbar */
        $debugbar = $this;
        /** @var Application $app */
        $app = $this->app;
        $this->selectStorage($debugbar);
        if ($this->shouldCollect('phpinfo', true)) {
            $this->addCollector(new PhpInfoCollector());
        }
        if ($this->shouldCollect('messages', true)) {
            $this->addCollector(new MessagesCollector());
        }
        if ($this->shouldCollect('time', true)) {
            $this->addCollector(new TimeDataCollector());
            if (!$this->isLumen()) {
                $this->app->booted(function () use($debugbar) {
                    $startTime = $this->app['request']->server('REQUEST_TIME_FLOAT');
                    if ($startTime) {
                        $debugbar['time']->addMeasure('Booting', $startTime, microtime(true));
                    }
                });
            }
            $debugbar->startMeasure('application', 'Application');
        }
        if ($this->shouldCollect('memory', true)) {
            $this->addCollector(new MemoryCollector());
        }
        if ($this->shouldCollect('exceptions', true)) {
            try {
                $exceptionCollector = new ExceptionsCollector();
                $exceptionCollector->setChainExceptions($this->app['config']->get('debugbar.options.exceptions.chain', true));
                $this->addCollector($exceptionCollector);
            } catch (\Exception $e) {
            }
        }
        if ($this->shouldCollect('laravel', false)) {
            $this->addCollector(new LaravelCollector($this->app));
        }
        if ($this->shouldCollect('default_request', false)) {
            $this->addCollector(new RequestDataCollector());
        }
        if ($this->shouldCollect('events', false) && isset($this->app['events'])) {
            try {
                $startTime = $this->app['request']->server('REQUEST_TIME_FLOAT');
                $eventCollector = new EventCollector($startTime);
                $this->addCollector($eventCollector);
                $this->app['events']->subscribe($eventCollector);
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add EventCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if ($this->shouldCollect('views', true) && isset($this->app['events'])) {
            try {
                $collectData = $this->app['config']->get('debugbar.options.views.data', true);
                $this->addCollector(new ViewCollector($collectData));
                $this->app['events']->listen('composing:*', function ($view) use($debugbar) {
                    $debugbar['views']->addView($view);
                });
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add ViewCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if (!$this->isLumen() && $this->shouldCollect('route')) {
            try {
                $this->addCollector($this->app->make('Barryvdh\\Debugbar\\DataCollector\\IlluminateRouteCollector'));
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add RouteCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if (!$this->isLumen() && $this->shouldCollect('log', true)) {
            try {
                if ($this->hasCollector('messages')) {
                    $logger = new MessagesCollector('log');
                    $this['messages']->aggregate($logger);
                    $this->app['log']->listen(function ($level, $message, $context) use($logger) {
                        try {
                            $logMessage = (string) $message;
                            if (mb_check_encoding($logMessage, 'UTF-8')) {
                                $logMessage .= !empty($context) ? ' ' . json_encode($context) : '';
                            } else {
                                $logMessage = "[INVALID UTF-8 DATA]";
                            }
                        } catch (\Exception $e) {
                            $logMessage = "[Exception: " . $e->getMessage() . "]";
                        }
                        $logger->addMessage('[' . date('H:i:s') . '] ' . "LOG.{$level}: " . $logMessage, $level, false);
                    });
                } else {
                    $this->addCollector(new MonologCollector($this->app['log']->getMonolog()));
                }
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add LogsCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if ($this->shouldCollect('db', true) && isset($this->app['db'])) {
            $db = $this->app['db'];
            if ($debugbar->hasCollector('time') && $this->app['config']->get('debugbar.options.db.timeline', false)) {
                $timeCollector = $debugbar->getCollector('time');
            } else {
                $timeCollector = null;
            }
            $queryCollector = new QueryCollector($timeCollector);
            if ($this->app['config']->get('debugbar.options.db.with_params')) {
                $queryCollector->setRenderSqlWithParams(true);
            }
            if ($this->app['config']->get('debugbar.options.db.backtrace')) {
                $queryCollector->setFindSource(true);
            }
            if ($this->app['config']->get('debugbar.options.db.explain.enabled')) {
                $types = $this->app['config']->get('debugbar.options.db.explain.types');
                $queryCollector->setExplainSource(true, $types);
            }
            if ($this->app['config']->get('debugbar.options.db.hints', true)) {
                $queryCollector->setShowHints(true);
            }
            $this->addCollector($queryCollector);
            try {
                $db->listen(function ($query, $bindings = null, $time = null, $connectionName = null) use($db, $queryCollector) {
                    // Laravel 5.2 changed the way some core events worked. We must account for
                    // the first argument being an "event object", where arguments are passed
                    // via object properties, instead of individual arguments.
                    if ($query instanceof \Illuminate\Database\Events\QueryExecuted) {
                        $bindings = $query->bindings;
                        $time = $query->time;
                        $connection = $query->connection;
                        $query = $query->sql;
                    } else {
                        $connection = $db->connection($connectionName);
                    }
                    $queryCollector->addQuery((string) $query, $bindings, $time, $connection);
                });
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add listen to Queries for Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if ($this->shouldCollect('mail', true) && class_exists('Illuminate\\Mail\\MailServiceProvider')) {
            try {
                $mailer = $this->app['mailer']->getSwiftMailer();
                $this->addCollector(new SwiftMailCollector($mailer));
                if ($this->app['config']->get('debugbar.options.mail.full_log') && $this->hasCollector('messages')) {
                    $this['messages']->aggregate(new SwiftLogCollector($mailer));
                }
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add MailCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if ($this->shouldCollect('logs', false)) {
            try {
                $file = $this->app['config']->get('debugbar.options.logs.file');
                $this->addCollector(new LogsCollector($file));
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add LogsCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if ($this->shouldCollect('files', false)) {
            $this->addCollector(new FilesCollector($app));
        }
        if ($this->shouldCollect('auth', false)) {
            try {
                if ($this->checkVersion('5.2')) {
                    // fix for compatibility with Laravel 5.2.*
                    $guards = array_keys($this->app['config']->get('auth.guards'));
                    $authCollector = new MultiAuthCollector($app['auth'], $guards);
                } else {
                    $authCollector = new AuthCollector($app['auth']);
                }
                $authCollector->setShowName($this->app['config']->get('debugbar.options.auth.show_name'));
                $this->addCollector($authCollector);
            } catch (\Exception $e) {
                $this->addThrowable(new Exception('Cannot add AuthCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
            }
        }
        if ($this->shouldCollect('gate', false)) {
            try {
                $gateCollector = $this->app->make('Barryvdh\\Debugbar\\DataCollector\\GateCollector');
                $this->addCollector($gateCollector);
            } catch (\Exception $e) {
                // No Gate collector
            }
        }
        $renderer = $this->getJavascriptRenderer();
        $renderer->setIncludeVendors($this->app['config']->get('debugbar.include_vendors', true));
        $renderer->setBindAjaxHandlerToXHR($app['config']->get('debugbar.capture_ajax', true));
        $this->booted = true;
    }

Usage Example

Пример #1
0
 /**
  * Boot the debugbar (add collectors, renderer and listener)
  *
  * @static 
  */
 public static function boot()
 {
     return \Barryvdh\Debugbar\LaravelDebugbar::boot();
 }