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.
▼Publicité Le texte se poursuit plus bas
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.
Depuis Laravel 6, il existe également la fonction ddd() (Dump, Die, Debug) qui affiche plus de détails : la liste des fonctions appelées (stack trace), les informations sur la requête (request), etc.
Ceci est utile pendant la phase de développement. Mais imaginez ce scénario : vous avez placé un appel à dd() (ou à ddd()) à 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 ddsafe().
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.
/**
* Fait un dump and die seulement si en mode débogage.
* Source : christianelagace.com
*
* @param mixed
* @return void
*/
function ddsafe($donnees) : void
{
if (Config::get('app.debug')) {
dd($donnees); // ou ddd($donnees)
}
}
Pour utiliser cette fonction, vous devrez ajouter un include_once dans le contrôleur où vous en avez besoin ou encore charger automatiquement le bibliothèque de fonctions de débogage.
include_once(app_path() . '/fonctions/debogage.php');
...
public function ...
{
...
ddsafe(Chalet::count());
}
L'information qui sera affiché par dd(), ddd() ou ddsafe() peut être de différent type, par exemple nombre, chaîne de caractères, tableau, objet.
Ex :
$chalet = Chalet::find(1);
ddsafe($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 :
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 :
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
}
Site fièrement hébergé chez A2 Hosting.