{"id":230134,"date":"2022-11-13T15:04:00","date_gmt":"2022-11-13T12:04:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230134"},"modified":"2022-11-13T15:18:55","modified_gmt":"2022-11-13T12:18:55","slug":"compositore-per-wordpress-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/compositore-per-wordpress-parte-2\/","title":{"rendered":"Compositore per WordPress, parte 2"},"content":{"rendered":"\n<p>In questo post, concluder\u00f2 ci\u00f2 che ho iniziato a condividere <a href=\"https:\/\/wordpress.mediadoma.com\/it\/compositore-per-wordpress-parte-1\/\" title=\"ieri\">ieri<\/a>: utilizzare gli strumenti e <a href=\"https:\/\/tommcfarlin.com\/tag\/libraries-for-wordpress-plugins\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le librerie<\/a> che ho condiviso insieme a Composer per annusare i tuoi commit durante lo sviluppo prima che il codice raggiunga il repository.<\/p>\n<p>Idealmente, vorrai sempre vedere qualcosa del genere nel tuo terminale ogni volta che esegui il commit del tuo codice:<\/p>\n<p>Ma non \u00e8 sempre cos\u00ec. Come per la maggior parte delle cose, per\u00f2, pi\u00f9 ti eserciti, pi\u00f9 ti abituerai a scrivere codice che passer\u00e0 automaticamente i vari sniff messi in atto attraverso le diverse regole (e le loro personalizzazioni).<\/p>\n<p>Prima di farlo, per\u00f2, devi configurare GrumPHP nel tuo repository.<\/p>\n<h2>Compositore per WordPress: Sniffing Commits<\/h2>\n<p>Ieri ho fornito un esempio <code>composer.json<\/code>\u00a0, quindi oggi esamineremo un file di configurazione GrumPHP di esempio e vedremo cosa fa ogni parte.<\/p>\n<p>La cosa importante da notare \u00e8 che, sebbene parte di ci\u00f2 che vedrai non sia atipico per un progetto, puoi perfezionarlo quanto vuoi per ogni progetto che usi. A volte potresti volere che sia pi\u00f9 concentrato di quanto non lo sia ora; altre volte, potresti non preoccuparti di alcuni degli sniff che offre.<\/p>\n<h3>Una configurazione iniziale<\/h3>\n<p>Detto questo, dopo l&#8217;installazione di GrumPHP, creer\u00e0 un <code>grumphp.yml<\/code>file quasi vuoto pronto per essere configurato. Ad esempio, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/ab0cd032408fdc5cc30c035d77ea49ba#file-00-initial-grumphp-yml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo \u00e8 ci\u00f2 che dovresti vedere<\/a> :<\/p>\n<pre><code>parameters:\n    git_dir:. bin_dir: vendor\/bin\n    tasks:<\/code><\/pre>\n<p>Si noti che non c&#8217;\u00e8 nient&#8217;altro che specificare:<\/p>\n<ul>\n<li>la posizione del deposito,<\/li>\n<li>la posizione dei binari installati tramite Composer,<\/li>\n<li>le attivit\u00e0 da eseguire.<\/li>\n<\/ul>\n<p>Nota che ho sempre usato &#8216;.&#8217; per la posizione del mio repository perch\u00e9 non l&#8217;ho mai installato all&#8217;interno del repository su cui sto lavorando.<\/p>\n<p>Lo stesso vale per i binari Composer. Cio\u00e8, dopo aver installato tutto tramite Composer, li lascio nelle loro posizioni iniziali.<\/p>\n<p>E infine, la <code>tasks<\/code>direttiva iniziale \u00e8 vuota perch\u00e9 non c&#8217;\u00e8 ancora nulla da eseguire. Questo \u00e8 ci\u00f2 che cercher\u00f2 nel prossimo passaggio.<\/p>\n<h3>Configurazione di GrumPHP<\/h3>\n<p>Una volta che hai installato le tue librerie e sei pronto per configurare un po&#8217; di configurazione, allora forse puoi fare qualcosa del <a href=\"https:\/\/gist.github.com\/tommcfarlin\/ab0cd032408fdc5cc30c035d77ea49ba#file-01-sample-grumphp-yml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">genere<\/a> :<\/p>\n<pre><code>parameters:\n    git_dir:. bin_dir: vendor\/bin\n    tasks:\n      securitychecker:\n      composer:\n      jsonlint:\n      xmllint:\n      yamllint:\n      phpstan:\n      phplint:\n      phpunit:\n      phpcs:\n      phpcpd:\n      phpmnd:\n      phpparser:\n        visitors:\n          no_exit_statements: ~\n          never_use_else: ~\n          forbidden_function_calls:\n            blacklist:\n              - \"die\"\n              - \"var_dump\"\n              - \"exit\"\n      phpversion:\n        project: '7.0'\n       phpmd:\n         ruleset: ['phpmd.xml.dist']<\/code><\/pre>\n<p>Non delineer\u00f2 tutto sopra (perch\u00e9 non c&#8217;\u00e8 molto da delineare) ma ci sono ancora alcune cose da sottolineare:<\/p>\n<ul>\n<li>Si noti che esiste un elenco di attivit\u00e0 molto pi\u00f9 lungo di quello definito nella directory iniziale. \u00c8 normale e significa che vogliamo eseguire quegli strumenti utilizzando la configurazione predefinita per ciascuno di questi strumenti.<\/li>\n<li>Alcune delle regole hanno un <code>~<\/code>accanto a loro. Questo dipende dall&#8217;attivit\u00e0 in questione, ma questo di solito significa che vogliamo utilizzare la configurazione predefinita.<\/li>\n<li>Ci sono attivit\u00e0 come quelle <code>phpparser<\/code>che hanno attivit\u00e0 secondarie. Alcuni di loro, come puoi vedere sopra, usano il comportamento predefinito. Altri scelgono di inserire nella lista nera termini come <code>die<\/code>, <code>var_dump<\/code>, <code>exit<\/code>e altro. Ci\u00f2 significa che, come se la direttiva non fosse sufficientemente chiara, causeremo il fallimento di GrumPHP se viene rilevata una di queste istruzioni.<\/li>\n<li>Allo stesso modo, dai un&#8217;occhiata a <code>phpmd<\/code>. Questo indica l&#8217;insieme di regole che useremo quando cercheremo vari pasticci nel codice. In questo caso, punta a un <code>dist<\/code>\u00a0file ma pu\u00f2 puntare a qualsiasi insieme personalizzato di regole che hai definito.<\/li>\n<\/ul>\n<p>Questo \u00e8 solo un esempio di ci\u00f2 che puoi fare con GrumPHP. Cio\u00e8, puoi installare alcune librerie tramite Composer, installarle e quindi personalizzare GrumPHP in modo da sfruttare la funzionalit\u00e0 fornita.<\/p>\n<p>Come per altri progetti simili, consiglio vivamente di leggere la <a href=\"https:\/\/github.com\/phpro\/grumphp\/blob\/master\/doc\/tasks.md\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentazione<\/a> esistente per le varie attivit\u00e0 che si integrano con GrumPHP.<\/p>\n<h2>Questo \u00e8 il compositore per WordPress?<\/h2>\n<p>S\u00ec e no. <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> \u00e8 un gestore di pacchetti generico per progetti PHP; tuttavia, non sembra che lo vediamo molto nel mondo di WordPress. Questo non vuol dire che non sia usato (lo \u00e8), ma semplicemente essere consapevoli di Composer e di come usarlo non \u00e8 sufficiente.<\/p>\n<p>Invece, penso che sia importante sapere come usare Composer per WordPress in modo da poter scrivere il pi\u00f9 alto livello possibile di codice di qualit\u00e0 per tutto il tempo assicurandoci di aderire a qualsiasi standard di codifica che abbiamo anche scelto di impiegare .<\/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>Questa \u00e8 l&#8217;ultima di una serie in due parti su come configurare Composer per lo sviluppo di WordPress in modo da poter scrivere codice di qualit\u00e0 superiore nel tuo lavoro).<\/p>\n","protected":false},"author":1,"featured_media":223641,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,804,720,844],"tags":[1168],"class_list":["post-230134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-php-6","category-sviluppatore","category-tutorial","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230134","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=230134"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230134\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/223641"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}