Dump and die : fonction dd() ou sa version améliorée, ddd()

Laravel vous offre une petite fonction bien utile pour tester rapidement le contenu d'une variable : dd() (Dump and Die). Elle permet d'afficher du texte à l'écran et de terminer l'exécution du programme.

On obtiendra alors un écran blanc avec seulement les données que l'on a demandé d'afficher. Dans le cas où la variable est un objet, Laravel le convertira automatiquement au format JSON pour en faciliter la lecture.

▼Publicité

Ceci est utile pendant la phase de développement. Mais imaginez ce scénario : vous avez placé un appel à dd() à un endroit très précis, dans un if qui n'est exécuté que dans un contexte particulier. Par mégarde, vous avez oublié d'effacer un appel à dd(). Vous mettez votre site en ligne et Bang ! Le contexte précis où le dd() était placé survient. Vous vous exposez à de gros problèmes...

Pour éviter ce genre de situation, je vous propose d'écrire une petite fonction nommée ddd() (Dump and Die if Debug mode).

Placez cette fonction dans un fichier que vous nommerez debogage.php. Je vous suggère de placer vos fichiers de fonctions dans un dossier nommé fonctions sous le dossier app.

Fichier app\fonctions\debogage.php

/**

 * Fait un dump and die seulement si en mode débogage.

 * Source : localhost/bloguechristiane

 *

 * @param  mixed

 * @return void

 */

function ddd($donnees)

{

    if (Config::get('app.debug')) {

        dd($donnees);

    }

}

Pour utiliser cette fonction, vous devrez ajouter un include_once dans le contrôleur où vous en avez besoin.

Contrôleur Laravel (PHP)

include_once(app_path() . '/fonctions/debogage.php');

...

public function ...

{

    ...

    ddd(Chalet::count());

}

L'information qui sera affiché par dd() ou par ddd() peut être de différent type, par exemple nombre, chaîne de caractères, tableau, objet.

Ex :

Contrôleur Laravel (PHP)

$chalet = Chalet::find(1);

ddd($chalet);

Dans cet exemple, on a affiché une instance d'un modèle, donc un objet. Ceci affichera à l'écran une série de propriétés, au format JSON.

Ex :

Résultat à l'écran

Chalet {#177 ▼

  #primaryKey: "id"

  #connection: null

  #table: null

  #keyType: "int"

  #perPage: 15

  +incrementing: true

  +timestamps: true

  #attributes: array:10 [▶]

  #original: array:10 [▶]

  #relations: []

  #hidden: []

  #visible: []

  #appends: []

  #fillable: []

  #guarded: array:1 [▶]

  #dates: []

  #dateFormat: null

  #casts: []

  #touches: []

  #observables: []

  #with: []

  +exists: true

  +wasRecentlyCreated: false

}

Un clic sur les flèches montrera les détails.

Il est également possible d'appuyer sur Ctrl+Clic sur la première flèche du haut pour ouvrir tous les détails d'un seul coup.

Ex :

Résultat à l'écran

Chalet {#177 ▼

  #primaryKey: "id"

  #connection: null

  #table: null

  #keyType: "int"

  #perPage: 15

  +incrementing: true

  +timestamps: true

  #attributes: array:10 [▼

    "id" => 1

    "description" => "La maison champêtre"

    "proprietaire_id" => 1

    "adresse1" => "18, chemin Beauchesne"

    "adresse2" => ""

    "ville_id" => 2

    "codepostal" => "A9A 9A9"

    "pretpourlocation" => 1

    "created_at" => null

    "updated_at" => null

  ]

  #original: array:10 [▼

    "id" => 1

    "description" => "La maison champêtre"

    "proprietaire_id" => 1

    "adresse1" => "18, chemin Beauchesne"

    "adresse2" => ""

    "ville_id" => 2

    "codepostal" => "A9A 9A9"

    "pretpourlocation" => 1

    "created_at" => null

    "updated_at" => null

  ]

  #relations: []

  #hidden: []

  #visible: []

  #appends: []

  #fillable: []

  #guarded: array:1 [▼

    0 => "*"

  ]

  #dates: []

  #dateFormat: null

  #casts: []

  #touches: []

  #observables: []

  #with: []

  +exists: true

  +wasRecentlyCreated: false

}

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories