{"id":230921,"date":"2022-12-04T09:08:00","date_gmt":"2022-12-04T06:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230921"},"modified":"2022-12-04T17:10:57","modified_gmt":"2022-12-04T14:10:57","slug":"lettura-e-comprensione-dei-log-degli-errori-di-wordpress-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/lettura-e-comprensione-dei-log-degli-errori-di-wordpress-parte-2\/","title":{"rendered":"Lettura e comprensione dei log degli errori di WordPress, parte 2"},"content":{"rendered":"\n<p><strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/lettura-e-comprensione-dei-log-degli-errori-di-wordpress-parte-1\/\" title=\"L'ultima volta\">L&#8217;ultima volta<\/a><\/strong>, abbiamo esaminato quanto segue:<\/p>\n<ol>\n<li>configurazione delle costanti di debug,<\/li>\n<li>trovare un file di registro degli errori,<\/li>\n<li>capire come leggere il file di registro,<\/li>\n<li>comprensione delle tracce dello stack<\/li>\n<li>capire come leggere lo stack<\/li>\n<\/ol>\n<p>Per quanto sia bello, \u00e8 comunque importante capire come scrivere i dati nel registro degli errori da un aspetto programmatico. Vale a dire; una cosa \u00e8 se il tuo lavoro genera errori, avvisi o avvisi.<\/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=\"Lettura e comprensione dei log degli errori di WordPress, parte 2\"><\/a><\/p>\n<p>\u00c8 un&#8217;altra cosa se vuoi capire come scrivere manualmente le informazioni nel file per la ricerca e il debug.<\/p>\n<p>In questo post, continueremo a fare esattamente questo per approfondire la nostra comprensione dei log degli errori di WordPress.<\/p>\n<h2>Comprensione dei log degli errori di WordPress, parte 2<\/h2>\n<p>Qual \u00e8 lo scopo di scrivere nel registro degli errori, comunque? Voglio dire, fa anche parte del processo di debug?<\/p>\n<p>Dal <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/lettura-e-comprensione-dei-log-degli-errori-di-wordpress-parte-1\/\" title=\"post precedente\">post precedente<\/a><\/strong> :<\/p>\n<blockquote>\n<p>Ma che dire del caso in cui vogliamo scaricare qualcosa per ottenere informazioni su ci\u00f2 che WordPress o PHP stanno vedendo? Anche questo \u00e8 utile.<\/p>\n<\/blockquote>\n<p>Quando i programmatori pensano al debug, molti di loro pensano di usare un vero debugger (cio\u00e8 un pezzo di software), impostare punti di interruzione e scorrere il codice per osservare il valore delle variabili durante l&#8217;esecuzione del programma.<\/p>\n<p>Arriveremo a quel punto, ma prima di farlo, diamo un&#8217;occhiata a come possiamo scrivere noi stessi nel registro degli errori per darci un&#8217;idea delle prestazioni del nostro lavoro.<\/p>\n<p>Dopotutto, una cosa \u00e8 se il nostro lavoro lancia avvisi, errori e avvisi. \u00c8 un altro se ci sono informazioni che vogliamo vedere. Ed \u00e8 qui che entra in gioco la scrittura nel registro degli errori.<\/p>\n<h3>Comprendere le funzioni PHP<\/h3>\n<p>Per scrivere nel log degli errori, \u00e8 importante comprendere due funzioni PHP:<\/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\">registro_errori<\/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\">stampa_r<\/a><\/strong><\/li>\n<\/ol>\n<p>Per quanto riguarda la funzione error_log, si noti che il suo scopo \u00e8:<\/p>\n<blockquote>\n<p>Invia un messaggio di errore alle routine di gestione degli errori definite<\/p>\n<\/blockquote>\n<p>Nella maggior parte dei casi, questo \u00e8 configurato per scrivere nel file di registro per noi tramite la configurazione predefinita di WordPress e PHP. Ma c&#8217;\u00e8 di pi\u00f9 perch\u00e9 spesso vorremo restituire i valori di variabili, array, oggetti e cos\u00ec via.<\/p>\n<p>A tal fine, \u00e8 necessario essere in grado di utilizzare <strong>print_r<\/strong> insieme a <strong>error_log<\/strong>. <strong>print_r<\/strong> esegue le seguenti operazioni:<\/p>\n<blockquote>\n<p>Stampa informazioni leggibili dall&#8217;uomo su una variabile<\/p>\n<\/blockquote>\n<p>E se leggi il manuale, noterai che sono necessari due argomenti, il secondo dei quali dovrebbe essere impostato su <strong>true<\/strong> se vuoi che il risultato di una funzione venga stampato nel file di registro.<\/p>\n<p>Nello specifico, come recita il manuale:<\/p>\n<blockquote>\n<p>Se desideri acquisire l&#8217;output di <strong>print_r()<\/strong>, utilizza il <code>return<\/code>parametro. Quando questo parametro \u00e8 impostato su <strong><code>TRUE<\/code><\/strong>, <strong>print_r()<\/strong> restituir\u00e0 le informazioni anzich\u00e9 stamparle.<\/p>\n<\/blockquote>\n<p>Quindi l&#8217;idea generale di scrivere il valore di un array, diciamo $exampleArray, sarebbe <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\">simile a questa<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\nerror_log(print_r($exampleArray, true));<\/code><\/pre>\n<p>Ma che dire nel contesto di WordPress?<\/p>\n<h3>Scrivere valori nel registro degli errori in WordPress<\/h3>\n<p>Quindi quanto sopra delinea le funzioni integrate in PHP di cui abbiamo bisogno, ma che aspetto ha nel contesto dello sviluppo di WordPress.<\/p>\n<p>Per fare ci\u00f2, supponiamo di aver implementato una versione del <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-del-modello-di-registro-in-wordpress\/\" title=\"Registry Pattern\">Registry Pattern<\/a><\/strong>. Nella nostra implementazione del pattern, abbiamo anche un metodo chiamato <strong>start<\/strong> che possiamo chiamare una volta che tutti i nostri oggetti sono stati aggiunti al registro.<\/p>\n<p>Potrebbe assomigliare <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-14-start-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a questo:<\/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>Ora, per quanto riguarda l&#8217;implementazione, questo \u00e8 semplice. Ma cosa succede se vogliamo vedere quali oggetti vengono invocati tramite ogni iterazione del ciclo.<\/p>\n<p>L&#8217;idea alla base di questo \u00e8 che siamo in grado di scorrere gli oggetti archiviati e di chiamare un metodo su ciascuno di essi. Ci\u00f2 si basa sull&#8217;idea che ciascuno degli oggetti ha un metodo disponibile su ciascuno di essi (che pu\u00f2 essere imposto da <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/programmazione-orientata-agli-oggetti-comprensione-delle-interfacce\/\" title=\"un&#039;interfaccia\">un&#8217;interfaccia<\/a><\/strong> ).<\/p>\n<p>In primo luogo, questo solleva una domanda: perch\u00e9 potremmo volerlo fare? A causa della natura del sistema di gestione degli eventi di WordPress, forse vogliamo assicurarci che ogni oggetto che ci aspettiamo venga attivato si attivi.<\/p>\n<p>In secondo luogo, come possiamo vedere quali oggetti vengono invocati? \u00c8 qui che entra in gioco la scrittura nel registro degli errori. Usando i metodi che abbiamo delineato sopra, un modo per farlo sarebbe quello di fare <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-15-view-stored-objects-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">quanto segue<\/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        error_log(print_r($obj, true));\n        $obj-&gt;start();\n    }\n}<\/code><\/pre>\n<p>Ci\u00f2 risulter\u00e0 nel seguente output:<\/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=\"Lettura e comprensione dei log degli errori di WordPress, parte 2\"><\/a><\/p>\n<p>Qui puoi vedere l&#8217;oggetto; \u00e8 lo spazio dei nomi, i suoi valori di propriet\u00e0 (incluso se le propriet\u00e0 sono private, protette, pubbliche e cos\u00ec via).<\/p>\n<p>Da l\u00ec, puoi quindi eseguire un po &#8216;di debug se l&#8217;output \u00e8 quello che non ti aspettavi o forse puoi usarlo per verificare che il tuo codice stia facendo ci\u00f2 che ti aspetteresti.<\/p>\n<p>Questo \u00e8 solo un esempio, per\u00f2. Puoi, tuttavia, scaricare i valori della variabile <strong>$storage<\/strong> prima ancora di scorrere il ciclo. Quella scelta dipende davvero da te e da ci\u00f2 che stai cercando di ottenere.<\/p>\n<h2>Utilizzo dei plugin installati<\/h2>\n<p>A questo punto, abbiamo trattato gli aspetti fondamentali del codice di debug tramite l&#8217;uso dei log degli errori.<\/p>\n<p>Ora, per\u00f2, dobbiamo rivolgere la nostra attenzione ai plugin di cui abbiamo discusso alcuni post fa. Dopodich\u00e9, alla fine lavoreremo fino a Xdebug.<\/p>\n<p>Ma successivamente, esamineremo gli strumenti a nostra disposizione all&#8217;interno di WordPress stesso.<\/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>\u00c8 un&#8217;altra cosa se vuoi capire come scrivere manualmente le informazioni nel file ai fini della ricerca e del debug. In questo post, continueremo a fare esattamente questo per approfondire la nostra comprensione dei log degli errori di 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":[896,720,844],"tags":[1168],"class_list":["post-230921","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230921","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=230921"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230921\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/162974"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}