{"id":230635,"date":"2022-12-04T09:52:00","date_gmt":"2022-12-04T06:52:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230635"},"modified":"2022-12-04T16:46:02","modified_gmt":"2022-12-04T13:46:02","slug":"lire-et-comprendre-les-journaux-derreurs-de-wordpress-partie-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/lire-et-comprendre-les-journaux-derreurs-de-wordpress-partie-2\/","title":{"rendered":"Lire et comprendre les journaux d&rsquo;erreurs de WordPress, partie 2"},"content":{"rendered":"\n<p><strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/lire-et-comprendre-les-journaux-derreurs-de-wordpress-partie-1\/\" title=\"La derni\u00e8re fois\">La derni\u00e8re fois<\/a><\/strong>, nous avons parcouru ce qui suit\u00a0:<\/p>\n<ol>\n<li>configuration des constantes de d\u00e9bogage,<\/li>\n<li>localiser un fichier journal des erreurs,<\/li>\n<li>comprendre comment lire le fichier journal,<\/li>\n<li>compr\u00e9hension des traces de pile<\/li>\n<li>comprendre comment lire la pile<\/li>\n<\/ol>\n<p>Aussi agr\u00e9able que cela puisse para\u00eetre, il est toujours important de comprendre comment \u00e9crire des donn\u00e9es dans le journal des erreurs d&rsquo;un point de vue programmatique. C&rsquo;est-\u00e0-dire; c&rsquo;est une chose si votre travail g\u00e9n\u00e8re des erreurs, des avertissements ou des avis.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162973-61e747bcebed4.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-162973-61e747bcebed4.png\" alt=\"Lire et comprendre les journaux d&#039;erreurs de WordPress, partie 2\"><\/a><\/p>\n<p>C&rsquo;est autre chose si vous voulez comprendre comment \u00e9crire manuellement des informations dans le fichier pour la recherche et le d\u00e9bogage.<\/p>\n<p>Dans cet article, nous continuerons \u00e0 faire exactement cela pour approfondir notre compr\u00e9hension des journaux d&rsquo;erreurs WordPress.<\/p>\n<h2>Comprendre les journaux d&rsquo;erreurs de WordPress, partie 2<\/h2>\n<p>Quel est l&rsquo;int\u00e9r\u00eat d&rsquo;\u00e9crire dans le journal des erreurs, de toute fa\u00e7on\u00a0? Je veux dire, cela fait-il m\u00eame partie du processus de d\u00e9bogage ?<\/p>\n<p>Du <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/lire-et-comprendre-les-journaux-derreurs-de-wordpress-partie-1\/\" title=\"post pr\u00e9c\u00e9dent\">post pr\u00e9c\u00e9dent<\/a><\/strong> :<\/p>\n<blockquote>\n<p>Mais qu&rsquo;en est-il du cas o\u00f9 nous voulons vider quelque chose pour avoir un aper\u00e7u de ce que voit WordPress ou PHP? C&rsquo;est aussi utile.<\/p>\n<\/blockquote>\n<p>Lorsque les programmeurs pensent au d\u00e9bogage, beaucoup d&rsquo;entre eux pensent \u00e0 utiliser un v\u00e9ritable d\u00e9bogueur (c&rsquo;est-\u00e0-dire un logiciel), \u00e0 d\u00e9finir des points d&rsquo;arr\u00eat et \u00e0 parcourir le code pour surveiller la valeur des variables pendant l&rsquo;ex\u00e9cution du programme.<\/p>\n<p>Nous allons arriver \u00e0 ce point, mais avant cela, examinons comment nous pouvons \u00e9crire nous-m\u00eames dans le journal des erreurs pour nous donner un aper\u00e7u de la performance de notre travail.<\/p>\n<p>Apr\u00e8s tout, c&rsquo;est une chose si notre travail g\u00e9n\u00e8re des avertissements, des erreurs et des avis. C&rsquo;en est une autre s&rsquo;il y a des informations que nous voulons voir. Et c&rsquo;est l\u00e0 que l&rsquo;\u00e9criture dans le journal des erreurs entre en jeu.<\/p>\n<h3>Comprendre les fonctions PHP<\/h3>\n<p>Pour \u00e9crire dans le journal des erreurs, il est important de comprendre deux fonctions PHP\u00a0:<\/p>\n<ol>\n<li><strong><a href=\"https:\/\/secure.php.net\/manual\/en\/function.error-log.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">error_log<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/secure.php.net\/manual\/en\/function.print-r.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">print_r<\/a><\/strong><\/li>\n<\/ol>\n<p>En ce qui concerne la fonction error_log, notez que son objectif est de\u00a0:<\/p>\n<blockquote>\n<p>Envoyer un message d&rsquo;erreur aux routines de gestion des erreurs d\u00e9finies<\/p>\n<\/blockquote>\n<p>Dans la plupart des cas, ceci est configur\u00e9 pour \u00e9crire dans le fichier journal pour nous via la configuration WordPress et PHP par d\u00e9faut. Mais il y a plus que cela car nous allons souvent vouloir sortir les valeurs de variables, de tableaux, d&rsquo;objets, etc.<\/p>\n<p>\u00c0 cette fin, vous devez pouvoir utiliser <strong>print_r<\/strong> en conjonction avec <strong>error_log<\/strong>. <strong>print_r<\/strong> effectue les op\u00e9rations suivantes\u00a0:<\/p>\n<blockquote>\n<p>Imprime des informations lisibles par l&rsquo;homme sur une variable<\/p>\n<\/blockquote>\n<p>Et si vous lisez le manuel, vous remarquerez qu&rsquo;il faut deux arguments dont le second doit \u00eatre d\u00e9fini sur <strong>vrai<\/strong> si vous voulez que le r\u00e9sultat d&rsquo;une fonction soit imprim\u00e9 dans le fichier journal.<\/p>\n<p>Plus pr\u00e9cis\u00e9ment, comme l&rsquo;indique le manuel :<\/p>\n<blockquote>\n<p>Si vous souhaitez capturer la sortie de <strong>print_r()<\/strong>, utilisez le <code>return<\/code>param\u00e8tre. Lorsque ce param\u00e8tre est d\u00e9fini sur <strong><code>TRUE<\/code><\/strong>, <strong>print_r()<\/strong> renverra les informations plut\u00f4t que de les imprimer.<\/p>\n<\/blockquote>\n<p>Ainsi, l&rsquo;id\u00e9e g\u00e9n\u00e9rale d&rsquo;\u00e9crire la valeur d&rsquo;un tableau, disons $exampleArray, ressemblerait <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-13-error-log-print-r-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e0 ceci<\/a><\/strong>\u00a0:<\/p>\n<pre><code>&lt;?php\n\nerror_log(print_r($exampleArray, true));<\/code><\/pre>\n<p>Mais qu&rsquo;en est-il dans le contexte de WordPress ?<\/p>\n<h3>\u00c9crire des valeurs dans le journal des erreurs dans WordPress<\/h3>\n<p>Ainsi, ce qui pr\u00e9c\u00e8de d\u00e9crit les fonctions int\u00e9gr\u00e9es \u00e0 PHP dont nous avons besoin, mais \u00e0 quoi cela ressemble-t-il dans le contexte du d\u00e9veloppement WordPress.<\/p>\n<p>Pour ce faire, disons que nous avons impl\u00e9ment\u00e9 une version du <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/utilisation-du-modele-de-registre-dans-wordpress\/\" title=\"Registry Pattern\">Registry Pattern<\/a><\/strong>. Dans notre impl\u00e9mentation du mod\u00e8le, nous avons \u00e9galement une m\u00e9thode appel\u00e9e <strong>start<\/strong> que nous pouvons appeler une fois que tous nos objets ont \u00e9t\u00e9 ajout\u00e9s au registre.<\/p>\n<p>Cela peut ressembler <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-14-start-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e0 ceci\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Starts all of the objects stored is the registry by calling\n * the `start` method that's available on each of the objects.\n *\/\npublic function start()\n{\n    foreach ($this-&gt;storage as $obj) {\n        $obj-&gt;start();\n    }\n}<\/code><\/pre>\n<p>Maintenant, en ce qui concerne la mise en \u0153uvre, c&rsquo;est simple. Mais que se passe-t-il si nous voulons voir quels objets sont invoqu\u00e9s via chaque it\u00e9ration de la boucle.<\/p>\n<p>L&rsquo;id\u00e9e derri\u00e8re cela est que nous sommes capables de parcourir les objets stock\u00e9s et d&rsquo;appeler une m\u00e9thode sur chacun d&rsquo;eux. Ceci est bas\u00e9 sur l&rsquo;id\u00e9e que chacun des objets a une m\u00e9thode disponible sur chacun d&rsquo;eux (qui peut \u00eatre appliqu\u00e9e par une <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/programmation-orientee-objet-comprendre-les-interfaces\/\" title=\"interface\">interface<\/a><\/strong> ).<\/p>\n<p>Tout d&rsquo;abord, cela soul\u00e8ve une question\u00a0: pourquoi pouvons-nous vouloir faire cela\u00a0? En raison de la nature du syst\u00e8me de gestion des \u00e9v\u00e9nements de WordPress, nous voulons peut-\u00eatre nous assurer que chaque objet que nous pr\u00e9voyons de d\u00e9clencher se d\u00e9clenche.<\/p>\n<p>Deuxi\u00e8mement, comment pouvons-nous voir quels objets sont invoqu\u00e9s\u00a0? C&rsquo;est l\u00e0 que l&rsquo;\u00e9criture dans le journal des erreurs entre en jeu. En utilisant les m\u00e9thodes que nous avons d\u00e9crites ci-dessus, une fa\u00e7on de proc\u00e9der serait de proc\u00e9der <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-15-view-stored-objects-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comme suit<\/a><\/strong>\u00a0:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Starts all of the objects stored is the registry by calling\n * the `start` method that's available on each of the objects.\n *\/\npublic function start()\n{\n    foreach ($this-&gt;storage as $obj) {\n        error_log(print_r($obj, true));\n        $obj-&gt;start();\n    }\n}<\/code><\/pre>\n<p>Cela se traduira par la sortie suivante\u00a0:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162973-61e747c0a5923.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-162973-61e747c0a5923.png\" alt=\"Lire et comprendre les journaux d&#039;erreurs de WordPress, partie 2\"><\/a><\/p>\n<p>Ici, vous pouvez voir l&rsquo;objet ; c&rsquo;est l&rsquo;espace de noms, c&rsquo;est les valeurs de propri\u00e9t\u00e9 (y compris si oui ou non les propri\u00e9t\u00e9s sont priv\u00e9es, prot\u00e9g\u00e9es, publiques, etc.).<\/p>\n<p>\u00c0 partir de l\u00e0, vous pouvez ensuite effectuer un peu de d\u00e9bogage si la sortie correspond \u00e0 ce que vous n&rsquo;attendiez pas ou peut-\u00eatre pouvez-vous l&rsquo;utiliser pour v\u00e9rifier que votre code fait ce que vous attendez.<\/p>\n<p>Ce n&rsquo;est qu&rsquo;un exemple, cependant. Vous pouvez cependant vider les valeurs de la variable <strong>$storage<\/strong> avant m\u00eame de parcourir la boucle. Ce choix d\u00e9pend vraiment de vous et de ce que vous cherchez \u00e0 r\u00e9aliser.<\/p>\n<h2>Utilisation des plugins install\u00e9s<\/h2>\n<p>\u00c0 ce stade, nous avons couvert les aspects fondamentaux du code de d\u00e9bogage gr\u00e2ce \u00e0 l&rsquo;utilisation de journaux d&rsquo;erreurs.<\/p>\n<p>Cependant, nous devons maintenant porter notre attention sur les plugins dont il a \u00e9t\u00e9 question il y a quelques articles. Apr\u00e8s cela, nous finirons par nous frayer un chemin jusqu&rsquo;\u00e0 Xdebug.<\/p>\n<p>Mais ensuite, nous examinerons les outils \u00e0 notre disposition depuis WordPress lui-m\u00eame.<\/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>C&rsquo;est autre chose si vous voulez comprendre comment \u00e9crire manuellement des informations dans le fichier \u00e0 des fins de recherche et de d\u00e9bogage. Dans cet article, nous continuerons \u00e0 faire exactement cela pour approfondir notre compr\u00e9hension des journaux d&rsquo;erreurs WordPress.<\/p>\n","protected":false},"author":1,"featured_media":162974,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,841],"tags":[1167],"class_list":["post-230635","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230635","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=230635"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/162974"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=230635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=230635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=230635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}