{"id":229986,"date":"2022-11-09T16:27:00","date_gmt":"2022-11-09T13:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229986"},"modified":"2022-11-09T19:35:26","modified_gmt":"2022-11-09T16:35:26","slug":"interfaccia-di-registrazione-psr-e-perche-la-registrazione-e-importante","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/interfaccia-di-registrazione-psr-e-perche-la-registrazione-e-importante\/","title":{"rendered":"Interfaccia di registrazione PSR (e perch\u00e9 la registrazione \u00e8 importante)"},"content":{"rendered":"\n<p>Due funzionalit\u00e0 di PHP che credo siano spesso abusate quando si tratta di &quot;debugging&quot; sono l&#8217;uso di <a href=\"https:\/\/php.net\/manual\/en\/function.echo.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">echo<\/a> e <a href=\"https:\/\/php.net\/manual\/en\/function.var-dump.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">var_dump<\/a>. Ne ho parlato in alcuni articoli diversi sul debug (come <a href=\"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-di-xdebug-con-valet-e-wordpress\/\" title=\"qui\">qui<\/a> e <a href=\"https:\/\/tommcfarlin.com\/debugging-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">qui<\/a> ).<\/p>\n<p>E per quanto io sia un fan dell&#8217;uso di un debugger, penso che sia anche importante implementare un tipo di sistema di registrazione in modo che tu o il tuo cliente possiate tornare indietro e rivedere l&#8217;attivit\u00e0 che si \u00e8 verificata all&#8217;interno del sistema come hanno fatto loro o i loro utenti stato, sai, usandolo.<\/p>\n<p>Tuttavia, ci sono due aspetti per farlo, specialmente se stai cercando di seguire l&#8217;interfaccia di registrazione PSR e sono:<\/p>\n<ol>\n<li>le regole per l&#8217;effettiva interfaccia di registrazione,<\/li>\n<li>un progetto che implementa correttamente detta interfaccia di registrazione.<\/li>\n<\/ol>\n<p>Allora perch\u00e9 non affrontare entrambi in questo post?<\/p>\n<h2>L&#8217;interfaccia di registrazione PSR<\/h2>\n<p>L&#8217; <a href=\"http:\/\/www.php-fig.org\/psr\/psr-3\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">interfaccia di registrazione PSR<\/a> (o PSR-3) copre una serie di cose di cui puoi leggere pi\u00f9 dettagliatamente nella pagina effettiva.<\/p>\n<p>Questi includono:<\/p>\n<ol>\n<li>Le basi<\/li>\n<li>Messaggi<\/li>\n<li>Contesto<\/li>\n<li>Classi di aiuto<\/li>\n<li>Pacchi<\/li>\n<li>Interfacce<\/li>\n<li>Livelli di registro<\/li>\n<li>E altro ancora.<\/li>\n<\/ol>\n<p>Ma ai fini di questo articolo, voglio parlare in modo specifico dell&#8217;interfaccia stessa, di un progetto che la implementa e del perch\u00e9 \u00e8 importante.<\/p>\n<h3>L&#8217;interfaccia di registrazione<\/h3>\n<p>La homepage per la documentazione afferma:<\/p>\n<blockquote>\n<p>Questo documento descrive un&#8217;interfaccia comune per le librerie di registrazione.<\/p>\n<p>L&#8217;obiettivo principale \u00e8 consentire alle librerie di ricevere un oggetto PsrLogLoggerInterface e di scrivervi dei log in modo semplice e universale.<\/p>\n<\/blockquote>\n<p>Dal punto di vista dello sviluppo, va bene, giusto? Voglio dire, fornisce un modo unico e coerente su cui possiamo scommettere per qualsiasi libreria di registrazione scegliamo di utilizzare nei nostri progetti. Tratter\u00f2 la mia libreria preferita pi\u00f9 avanti nell&#8217;articolo.<\/p>\n<p>Per coloro che non conoscono la programmazione orientata agli oggetti o semplicemente curiosi di sapere come un&#8217;interfaccia coerente ci avvantaggia, pensala in questo modo: indipendentemente dal sistema che scegli, hai la garanzia di avere un certo insieme di funzioni, stati e cos\u00ec via pu\u00f2 utilizzare nella tua applicazione.<\/p>\n<p>In definitiva, l&#8217;aggiunta di un sistema di registrazione che ha uno standard da seguire fornisce una variet\u00e0 di vantaggi indipendentemente dalla libreria scelta (purch\u00e9 sia \u200b\u200bconforme a PSR-3).<\/p>\n<h3>Prova Monologo<\/h3>\n<p><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monolog<\/a> \u00e8 pi\u00f9 o meno l&#8217;utilit\u00e0 di registrazione di fatto per le applicazioni PHP.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166191-61e78fbe1b295.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-166191-61e78fbe1b295.png\" alt=\"Interfaccia di registrazione PSR (e perch\u00e9 la registrazione \u00e8 importante)\" ><\/a><\/p>\n<p>\u00c8 facile aggiungere il progetto tramite <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>, ma include anche una variet\u00e0 di modi diversi per generare i dati:<\/p>\n<blockquote>\n<p>Monolog invia i tuoi log a file, socket, caselle di posta, database e vari servizi web. Vedi l&#8217;elenco completo dei gestori di seguito. Gestori speciali consentono di creare strategie di registrazione avanzate.<\/p>\n<\/blockquote>\n<p>Personalmente, l&#8217;ho usato solo nel contesto dell&#8217;invio di output ai file; tuttavia, avere la possibilit\u00e0 di inviarlo in output su altri sistemi (soprattutto database come quando si lavora con WordPress) \u00e8 bello. Certo, non vuoi abusare di questa capacit\u00e0.<\/p>\n<p>In secondo luogo, \u00e8 importante riconoscere che, sebbene sia possibile istanziare il Logger all&#8217;interno di una funzione o di un&#8217;altra classe, esistono altri modi pi\u00f9 orientati agli oggetti per farlo. PSR-3 copre questo (come menzionato sopra).<\/p>\n<p>In breve, vuoi assicurarti che la tua classe accetti un&#8217;istanza di una classe che implementa LoggerInterface. Monolog implementa detta interfaccia, quindi non \u00e8 un problema.<\/p>\n<p>Inoltre, cosa succede quando si dispone di un gruppo di classi correlate che devono tutte implementare la registrazione?<\/p>\n<ul>\n<li>Queste classi ereditano da un genitore comune?<\/li>\n<li>Queste classi implementano un <a href=\"https:\/\/php.net\/manual\/en\/language.oop5.traits.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tratto<\/a>? (Questa \u00e8 un&#8217;opzione che un amico mi ha presentato di recente.)<\/li>\n<li>Ogni classe accetta semplicemente la dipendenza tramite l&#8217;iniezione del costruttore?<\/li>\n<\/ul>\n<p>Esistono vari modi in cui i logger possono essere aggiunti a una classe e dipende da come \u00e8 organizzato il progetto.<\/p>\n<h2>Altro sulla registrazione<\/h2>\n<p>In ogni caso, l&#8217;introduzione dell&#8217;accesso in un&#8217;applicazione \u00e8 importante per una serie di motivi, ad esempio per essere in grado di risolvere i problemi quando qualcosa non si comporta come previsto sia in fase di sviluppo, staging e soprattutto in produzione.<\/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>Se stai cercando di seguire l&#8217;interfaccia di registrazione PSR, assicurati di rivedere PSR-3 e controllare Monolog che implementa detta interfaccia di registrazione.<\/p>\n","protected":false},"author":1,"featured_media":166192,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[720,844],"tags":[1168],"class_list":["post-229986","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229986","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=229986"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229986\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/166192"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}