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.
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.
/**
* 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.
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 :
$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 :
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
}