{"id":234143,"date":"2022-12-08T09:19:00","date_gmt":"2022-12-08T06:19:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234143"},"modified":"2022-12-08T09:20:53","modified_gmt":"2022-12-08T06:20:53","slug":"ecrire-des-messages-dans-le-journal-de-debogage-de-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/ecrire-des-messages-dans-le-journal-de-debogage-de-wordpress\/","title":{"rendered":"\u00c9crire des messages dans le journal de d\u00e9bogage de WordPress"},"content":{"rendered":"\n<p>Chaque fois que je travaille sur un projet, j&rsquo;ai souvent WordPress en <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/outils-de-debogage-wordpress-natifs-qui-ne-necessitent-pas-dide\/\" title=\"mode d\u00e9bogage\">mode d\u00e9bogage<\/a><\/strong> et j&rsquo;aime \u00e9crire des messages dans le journal des erreurs que je peux facilement visualiser, suivre et suivre chaque fois que je travaille sur un projet.<\/p>\n<p>Lorsque je fais cela, il y a deux fa\u00e7ons (et cela d\u00e9pend simplement du projet):<\/p>\n<ul>\n<li>Je vais utiliser une biblioth\u00e8que telle que <strong><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monolog<\/a><\/strong> ,<\/li>\n<li>Je vais utiliser ma propre fonction de journal simple.<\/li>\n<\/ul>\n<p>Dans cet article, je vais couvrir ce dernier. Autrement dit, je vais partager comment j&rsquo;\u00e9cris des messages dans le journal de d\u00e9bogage de WordPress, puis certaines des choses auxquelles vous devrez peut-\u00eatre faire attention chaque fois que vous faites la m\u00eame chose.<\/p>\n<h2>Le journal de d\u00e9bogage de WordPress<\/h2>\n<p>Tout d&rsquo;abord, il est important de noter que la fonction que je vais partager se situe g\u00e9n\u00e9ralement dans le contexte d&rsquo;une classe de base.<\/p>\n<p>Disons que j&rsquo;ai un <strong>AbstractSubscriber<\/strong> que tous mes abonn\u00e9s impl\u00e9mentent (comme un <strong>ScriptAssetSubscriber<\/strong> pour l&rsquo;enregistrement et la mise en file d&rsquo;attente du fichier JavaScript).<\/p>\n<p>Le <strong>AbstractSubscriber<\/strong> inclura cette fonction afin qu&rsquo;elle puisse \u00eatre appel\u00e9e par n&rsquo;importe quelle classe enfant. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/d8bed85851dad283183d84a819dd6c9a#file-00-log-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">La fonction est assez simple :<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Prints a message to the debug file that can easily be called by any subclass.\n *\n * @param mixed $message      an object, array, string, number, or other data to write to the debug log\n * @param bool  $shouldNotDie whether or not the The function should exit after writing to the log\n *\n *\/\nprotected function log($message, $shouldNotDie = true)\n{\n    error_log(print_r($message, true));\n    if ($shouldNotDie) {\n        exit;\n    }\n}<\/code><\/pre>\n<p>Mais il y a plusieurs choses \u00e0 propos de cette fonction qui peuvent violer un principe ou d\u00e9clencher des erreurs dans les outils de qualit\u00e9 du code.<\/p>\n<h3>Arguments bool\u00e9ens facultatifs<\/h3>\n<p>Chaque fois qu&rsquo;une fonction accepte un argument bool\u00e9en facultatif, cela peut indiquer qu&rsquo;une fonction a plus d&rsquo;une responsabilit\u00e9 (violant ainsi le <a href=\"https:\/\/en.wikipedia.org\/wiki\/Single_responsibility_principle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">principe de responsabilit\u00e9 unique<\/a> ).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73cdb388b5.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73cdb388b5.png\" alt=\"\u00c9crire des messages dans le journal de d\u00e9bogage de WordPress\"><\/a><\/p>\n<p>La raison pour laquelle cela violerait ledit principe est que cela donne \u00e0 un module plus d&rsquo;une raison de changer.<\/p>\n<p>Je suis \u00e0 l&rsquo;aise de permettre que cela soit \u00e9crit de cette fa\u00e7on parce que je l&rsquo;utilise pour le d\u00e9bogage, pas pour les environnements de production, et parce qu&rsquo;il y a des moments o\u00f9 je peux vouloir arr\u00eater l&rsquo;ex\u00e9cution, et il y a des moments o\u00f9 je ne le fais pas.<\/p>\n<p>Et bien s\u00fbr, je pourrais \u00e9crire deux fonctions distinctes, mais si c&rsquo;est la seule fonction qui fait \u00e7a, \u00e7a me va.<\/p>\n<h3>D\u00e9clarations de sortie interdites<\/h3>\n<p>D&rsquo;autres outils de qualit\u00e9 de code n&rsquo;aiment pas l&rsquo; instruction <strong>exit<\/strong> (et, de m\u00eame, ils n&rsquo;aiment pas l&rsquo; instruction <strong>die<\/strong> ). Et c&rsquo;est compr\u00e9hensible: ils arr\u00eatent g\u00e9n\u00e9ralement le programme lorsque nous devrions lancer une exception, retourner une valeur ou faire quelque chose pour g\u00e9rer la situation avec \u00e9l\u00e9gance.<\/p>\n<p>Encore une fois, cependant, parce que dans cette fonction, il y a des moments o\u00f9 je veux arr\u00eater l&rsquo;ex\u00e9cution, je suis d&rsquo;accord pour g\u00e9rer les cons\u00e9quences d&rsquo;avoir la ligne de code dans la fonction.<\/p>\n<p>Alternativement, je pourrais utiliser <strong>wp_die(),<\/strong> et la plupart des outils de qualit\u00e9 de code ne l&rsquo;attraperaient probablement pas, mais cela masque le probl\u00e8me principal. Si quoi que ce soit, il est peut-\u00eatre pr\u00e9f\u00e9rable de simplement supprimer l&rsquo;avertissement en utilisant la directive que votre renifleur de choix peut autoriser.<\/p>\n<h2>Quoi qu&rsquo;il en soit, enregistrez le message<\/h2>\n<p>En fin de compte, le but de la fonction ci-dessus est de fournir un moyen simple d&rsquo;\u00e9crire dans le journal de d\u00e9bogage de WordPress et \u00e9ventuellement d&rsquo;arr\u00eater l&rsquo;ex\u00e9cution du programme en le faisant.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73ce108d1e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162356-61e73ce108d1e.png\" alt=\"\u00c9crire des messages dans le journal de d\u00e9bogage de WordPress\"><\/a><\/p>\n<p>Ce n&rsquo;est clairement pas sans probl\u00e8mes, et il existe des biblioth\u00e8ques de meilleure qualit\u00e9 qui sont disponibles, mais parfois vous n&rsquo;avez pas besoin d&rsquo;un marteau pour une punaise probl\u00e9matique.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici une fonction simple pour \u00e9crire dans le journal de d\u00e9bogage de WordPress (ce n&rsquo;est pas sans quelques mises en garde). J&rsquo;ai tendance \u00e0 l&rsquo;utiliser dans le code local lorsque je travaille avec des classes abstraites.<\/p>\n","protected":false},"author":1,"featured_media":235343,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,801,862],"tags":[1167],"class_list":["post-234143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-php-3","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=234143"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234143\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/235343"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}