{"id":234123,"date":"2022-12-08T09:24:00","date_gmt":"2022-12-08T06:24:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234123"},"modified":"2022-12-08T09:25:06","modified_gmt":"2022-12-08T06:25:06","slug":"scrivere-messaggi-nel-registro-di-debug-di-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/scrivere-messaggi-nel-registro-di-debug-di-wordpress\/","title":{"rendered":"Scrivere messaggi nel registro di debug di WordPress"},"content":{"rendered":"\n<p>Ogni volta che lavoro su un progetto, ho spesso WordPress impostato in <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/strumenti-di-debug-nativi-di-wordpress-che-non-richiedono-un-ide\/\" title=\"modalit\u00e0 di debug\">modalit\u00e0 di debug<\/a><\/strong> e mi piace scrivere messaggi nel registro degli errori che posso facilmente visualizzare, tracciare e seguire ogni volta che lavoro su un progetto.<\/p>\n<p>Quando lo faccio, ci sono due modi (e dipende solo dal progetto):<\/p>\n<ul>\n<li>User\u00f2 una libreria come <strong><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monolog<\/a><\/strong> ,<\/li>\n<li>User\u00f2 la mia semplice funzione di registro.<\/li>\n<\/ul>\n<p>In questo post tratter\u00f2 quest&#8217;ultimo. Cio\u00e8, condivider\u00f2 come scrivo messaggi nel registro di debug di WordPress e poi alcune delle cose a cui potresti dover prestare attenzione ogni volta che fai lo stesso.<\/p>\n<h2>Il registro di debug di WordPress<\/h2>\n<p>Innanzitutto, \u00e8 importante notare che la funzione che ho intenzione di condividere \u00e8 solitamente nel contesto di una classe base.<\/p>\n<p>Diciamo che ho un <strong>AbstractSubscriber<\/strong> implementato da tutti i miei abbonati (come uno <strong>ScriptAssetSubscriber<\/strong> per la registrazione e l&#8217;accodamento del file JavaScript).<\/p>\n<p>AbstractSubscriber includer\u00e0 questa funzione in modo che possa essere chiamata da qualsiasi classe figlio<strong>.<\/strong> <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/d8bed85851dad283183d84a819dd6c9a#file-00-log-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">La funzione \u00e8 abbastanza semplice:<\/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>Ma ci sono diverse cose su questa funzione che possono violare un principio o innescare errori negli strumenti di qualit\u00e0 del codice.<\/p>\n<h3>Argomenti booleani opzionali<\/h3>\n<p>Ogni volta che una funzione accetta un argomento booleano facoltativo, pu\u00f2 indicare che una funzione ha pi\u00f9 di una responsabilit\u00e0 (violando cos\u00ec il <a href=\"https:\/\/en.wikipedia.org\/wiki\/Single_responsibility_principle\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">principio di responsabilit\u00e0 singola<\/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=\"Scrivere messaggi nel registro di debug di WordPress\"><\/a><\/p>\n<p>Il motivo per cui ci\u00f2 violerebbe detto principio \u00e8 che fornisce a un modulo pi\u00f9 di una ragione per cambiare.<\/p>\n<p>Mi sento a mio agio nel consentire che questo venga scritto in questo modo perch\u00e9 lo uso per il debug, non per gli ambienti di produzione e perch\u00e9 ci sono momenti in cui potrei voler interrompere l&#8217;esecuzione e ci sono momenti in cui non lo faccio.<\/p>\n<p>E certo, potrei scrivere due funzioni separate, ma se questa \u00e8 l&#8217;unica funzione che lo fa, mi va bene.<\/p>\n<h3>Dichiarazioni di uscita vietate<\/h3>\n<p>Altri strumenti per la qualit\u00e0 del codice non amano l&#8217; istruzione <strong>exit<\/strong> (e, allo stesso modo, non amano l&#8217; istruzione <strong>die<\/strong> ). E comprensibilmente: in genere bloccano completamente il programma quando dovremmo lanciare un&#8217;eccezione, restituire un valore o in generale fare qualcosa per gestire la situazione con grazia.<\/p>\n<p>Ancora una volta, per\u00f2, poich\u00e9 in questa funzione ci sono momenti in cui voglio interrompere l&#8217;esecuzione, sto bene affrontare le conseguenze di avere la riga di codice nella funzione.<\/p>\n<p>In alternativa, potrei usare <strong>wp_die()<\/strong> e la maggior parte degli strumenti di qualit\u00e0 del codice probabilmente non lo catturerebbero, ma questo sta mascherando il problema principale. Semmai, forse \u00e8 meglio semplicemente sopprimere l&#8217;avviso usando qualsiasi direttiva consentita dal tuo sniffer di scelta.<\/p>\n<h2>Indipendentemente da ci\u00f2, registra il messaggio<\/h2>\n<p>In definitiva, lo scopo della funzione sopra \u00e8 quello di fornire un modo semplice per scrivere nel registro di debug di WordPress e, facoltativamente, interrompere l&#8217;esecuzione del programma quando lo si fa.<\/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=\"Scrivere messaggi nel registro di debug di WordPress\"><\/a><\/p>\n<p>Chiaramente non \u00e8 privo di problemi e sono disponibili librerie di qualit\u00e0 superiore, ma a volte non \u00e8 necessario un martello per una puntina da disegno problematica.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ecco una semplice funzione per scrivere nel registro di debug di WordPress (non senza alcuni avvertimenti). Tendo ad usarlo nel codice locale quando lavoro con classi astratte.<\/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":[896,804,865],"tags":[1168],"class_list":["post-234123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-php-6","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/234123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=234123"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/234123\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/235343"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=234123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=234123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=234123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}