Larravel Exception

Vous avez créé une nouvelle application Laravel pour votre client et l’avez déployée sur le serveur de production. Tout fonctionnait bien jusqu’à ce qu’un client ait un problème avec l’application à cause d’un code bogué. Il quitte immédiatement l’application, et la même chose arrive avec plusieurs clients avant que vous connaissiez le bug. Vous corrigez le bug, et tout devient normal.

Mais que faire si vous avez été informé immédiatement par e-mail sur le bug et que vous le corrigez le plus tôt possible. Dans Laravel, cela peut être fait facilement et dans ce post, nous allons apprendre comment.

Dans Laravel, toutes les exceptions sont gérées par la classe App\Exceptions\Handler. Cette classe contient deux méthodes: report et render. Nous sommes seulement intéressés par la méthode report. Il est utilisé pour enregistrer les exceptions ou les envoyer à un service externe. Par défaut, la méthode report transmet simplement l’exception à la classe de base où l’exception est enregistrée. Cependant, nous pouvons l’utiliser pour envoyer un email aux développeurs à propos de l’exception.

/**
 * Report or log an exception.
 *
 * This is a great spot to send exceptions to Emails.
 *
 * @param  \Exception  $exception
 * @return void
 */

public function report(Exception $exception)
{
    if ($this->shouldReport($exception)) {
        $this->sendEmail($exception); // sends an email
    }

    return parent::report($exception);
}

/**
 * Sends an email to the developer about the exception.
 *
 * @param  \Exception  $exception
 * @return void
 */

public function sendEmail(Exception $exception)
{
    // sending email
}

Ici, nous utilisons la méthode shouldReport pour ignorer les exceptions répertoriées dans la propriété $dontReport du gestionnaire d’exceptions.

Chaque type d’e-mail envoyé par l’application est représenté comme une classe « mailable » dans Laravel. Nous devons donc créer notre classe mailable en utilisant la commande make:mail :

$ php artisan make:mail ExceptionOccured

Cela créera une classe ExceptionOccured dans le répertoire app/Mail.

Le simple envoi du courrier ne résoudra pas le problème. Nous avons besoin de la trace de pile complète de l’exception. Et pour cela, nous pouvons utiliser le composant Debug de Symfony.

public function sendEmail(Exception $exception)
{
    try {
        $e = FlattenException::create($exception);

        $handler = new SymfonyExceptionHandler();

        $html = $handler->getHtml($e);

        Mail::to('developer@gmail.com')->send(new ExceptionOccured($html));
    } catch (Exception $ex) {
        dd($ex);
    }
}

Assurez-vous d’ajouter le code suivant en haut du fichier:

use Mail;
use Symfony\Component\Debug\Exception\FlattenException;
use Symfony\Component\Debug\ExceptionHandler as SymfonyExceptionHandler;
use App\Mail\ExceptionOccured;

Ensuite, dans votre classe ExceptionOccured :

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class ExceptionOccured extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * The body of the message.
     *
     * @var string
     */

    public $content;

    /**
     * Create a new message instance.
     *
     * @return void
     */

    public function __construct($content)
    {
        $this->content = $content;
    }

    /**
     * Build the message.
     *
     * @return $this
     */

    public function build()
    {
        return $this->view('emails.exception')
                    ->with('content', $this->content);
    }
}

Ajoutez le code suivant dans votre fichier de vue emails.exception :

{!! $content !!}

Maintenant, chaque fois qu’une exception est levée dans votre application, vous recevrez un e-mail avec une trace de pile complète. Excellent!

Laravel Debugbar

« Laravel Debugbar » par Barry vd. Heuvel est un package qui vous permet de garder rapidement et facilement des onglets sur votre application pendant le développement. Avec une installation simple et des fonctionnalités puissantes, le package Debugbar est l’un des packages de base pour Laravel.

Installation du « Laravel Debugbar » :

L’installation est extrêmement simple.

Dans votre projet Laravel 5.6, tapez la commande :

composer require barryvdh/laravel-debugbar --dev

Si vous n’utilisez pas la découverte automatique, ajoutez le ServiceProvider au tableau des providers dans config/app.php :

Barryvdh\Debugbar\ServiceProvider::class,

Si vous souhaitez utiliser la façade pour logger des messages, ajoutez-la à vos façades dans config/app.php :

'Debugbar' => Barryvdh\Debugbar\Facade::class,

Copiez le fichier config dans votre configuration locale avec la commande publish:

php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

Utilisation :

DebugBar

Le profiler est activé par défaut, si vous avez APP_DEBUG = true. Vous pouvez remplacer cela dans la configuration (debugbar.enabled) ou en définissant DEBUGBAR_ENABLED dans votre fichier .env . Voir plus d’options dans config/debugbar.php .

Vous pouvez maintenant ajouter des messages à l’aide de la façade, en utilisant les niveaux PSR-3 (débogage, info, avis, avertissement, erreur, critique, alerte, urgence) :

Debugbar::info($object);
Debugbar::error('Error!');
Debugbar::warning('Watch out…');
Debugbar::addMessage('Another message', 'mylabel')

Vous pouvez démarrer / arrêter le chronométrage:

Debugbar::startMeasure('render','Time for rendering');
Debugbar::stopMeasure('render');
Debugbar::addMeasure('now', LARAVEL_START, microtime(true));
Debugbar::measure('My long operation', function() {
    // Do something…
});

Ou logger des exceptions :

try {
    throw new Exception('foobar');
} catch (Exception $e) {
    Debugbar::addThrowable($e);
}

 

Laravel est considéré comme l’un des frameworks PHP les plus populaires. Ce tutoriel vous donnera un guide étape par étape sur la façon d’installer Laravel 5.6 sous Windows IIS avec Composer (un gestionnaire de paquets PHP) pour pouvoir commencer à utiliser Laravel pour vos projets.

Liens utilisés dans cette vidéo :

Pré-requis pour l’installation de PHP:

http://php.net/manual/en/install.windows.requirements.php

Téléchargement de PHP sous Windows:

https://windows.php.net/download/

Téléchargement de Composer sous Windows:

https://getcomposer.org/

Installation de Laravel 5.6:

https://laravel.com/docs/5.6/installation