{"id":229681,"date":"2022-11-10T13:27:00","date_gmt":"2022-11-10T10:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229681"},"modified":"2022-11-10T13:27:07","modified_gmt":"2022-11-10T10:27:07","slug":"bibliotheques-pour-plugins-wordpress-partie-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/bibliotheques-pour-plugins-wordpress-partie-1\/","title":{"rendered":"Biblioth\u00e8ques pour plugins WordPress, partie 1"},"content":{"rendered":"\n<p>Plus vous travaillez avec WordPress, en particulier si vous utilisez des outils comme <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> et autres, plus vous trouverez probablement certaines biblioth\u00e8ques, outils et \u00e9l\u00e9ments similaires qui constituent la base des projets sur lesquels vous travaillez.<\/p>\n<p>Parfois, vous pouvez les trouver en parcourant le code d&rsquo;autres personnes, peut-\u00eatre que vous les trouverez en parcourant GitHub, ou peut-\u00eatre <a href=\"https:\/\/twitter.com\/tobyschrapel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">que quelqu&rsquo;un avec qui<\/a> <a href=\"https:\/\/twitter.com\/twigpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vous<\/a> travaillez sugg\u00e9rera une biblioth\u00e8que (ou quelques-unes) en fonction d&rsquo;un projet.<\/p>\n<p>Personnellement, j&rsquo;ai eu l&rsquo;exp\u00e9rience de tout ce qui pr\u00e9c\u00e8de, et plus je travaille sur la cr\u00e9ation de solutions pour moi-m\u00eame ou pour les autres, plus je me retrouve \u00e0 mettre en place la m\u00eame fondation pour chaque projet (qui est g\u00e9n\u00e9ralement un plugin quelconque) .<\/p>\n<h2>Biblioth\u00e8ques pour plugins WordPress<\/h2>\n<p>\u00c0 cette fin, j&rsquo;ai pens\u00e9 qu&rsquo;il pourrait \u00eatre utile de partager les biblioth\u00e8ques que j&rsquo;utilise lors de la cr\u00e9ation de plugins WordPress. Le contenu sera r\u00e9parti sur quelques messages pour que chacun soit court et cibl\u00e9, mais vous trouverez peut-\u00eatre quelque chose que vous n&rsquo;avez pas utilis\u00e9 auparavant (ou qui am\u00e9liorera votre utilisation actuelle).<\/p>\n<h3><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnit<\/a><\/h3>\n<p>Quiconque a \u00e9crit du code dans n&rsquo;importe quel langage de programmation conna\u00eet probablement n&rsquo;importe quel type de biblioth\u00e8que *Unit. En bref, c&rsquo;est un moyen d&rsquo;\u00e9crire facilement des tests unitaires.<\/p>\n<p>Depuis <a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la page d&rsquo;accueil du projet<\/a> :<\/p>\n<blockquote>\n<p>PHPUnit est un framework de test orient\u00e9 programmeur pour PHP. Il s&rsquo;agit d&rsquo;une instance de l&rsquo;architecture xUnit pour les frameworks de tests unitaires.<\/p>\n<\/blockquote>\n<p>Je ne suis pas quelqu&rsquo;un qui souscrit n\u00e9cessairement \u00e0 une couverture de code \u00e0 100% (et c&rsquo;est un sujet pour un autre article), mais si vous allez \u00e9crire des tests unitaires, alors c&rsquo;est la biblioth\u00e8que de facto pour les tests unitaires de votre code.<\/p>\n<h3><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/h3>\n<p>Tout au long de cette ann\u00e9e, <a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a> est sans doute devenu ma biblioth\u00e8que pr\u00e9f\u00e9r\u00e9e (bien qu&rsquo;elle soit am\u00e9lior\u00e9e par des biblioth\u00e8ques suppl\u00e9mentaires que je couvrirai tout au long de cette s\u00e9rie d&rsquo;articles).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78ddea0549.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-166075-61e78ddea0549.png\" alt=\"Biblioth\u00e8ques pour plugins WordPress, partie 1\"><\/a><\/p>\n<p>J&rsquo;en ai parl\u00e9 dans d&rsquo;autres posts. Bien qu&rsquo;il se d\u00e9crive comme un \u00aboutil de qualit\u00e9 de code\u00bb, vous ne pouvez vraiment pas vous emp\u00eacher de voir les avantages jusqu&rsquo;\u00e0 ce que vous le connectiez pour surveiller votre code avant d&rsquo;essayer de le valider dans un r\u00e9f\u00e9rentiel.<\/p>\n<p>La description plus longue est\u00a0:<\/p>\n<blockquote>\n<p>Si les tests \u00e9chouent, vous ne pourrez pas valider vos modifications. Cet outil pratique am\u00e9liorera non seulement votre base de code, mais il apprendra \u00e9galement \u00e0 vos coll\u00e8gues \u00e0 \u00e9crire un meilleur code en suivant les meilleures pratiques que vous avez d\u00e9termin\u00e9es en \u00e9quipe.<\/p>\n<\/blockquote>\n<p>Et, tout comme si vous aviez utilis\u00e9 n&rsquo;importe quel moniteur de <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/utilisation-des-psr-par-rapport-aux-normes-de-codage-wordpress\/\" title=\"normes de codage\">normes de codage<\/a> dans votre IDE, c&rsquo;est l&rsquo;une de ces choses qui peuvent \u00eatre frustrantes \u00e0 utiliser au d\u00e9but.<\/p>\n<p>Mais au fur et \u00e0 mesure que vous l&rsquo;apprenez, il devient plus facile de savoir ce qu&rsquo;il va signaler, vous commencez donc automatiquement \u00e0 \u00e9crire du code qui a un niveau de qualit\u00e9 sup\u00e9rieur.<\/p>\n<h3><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a><\/h3>\n<p><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a> (abr\u00e9viation de PHP Mess Detector) fonctionne bien en conjonction avec GrumPHP dans la mesure o\u00f9 il peut traiter votre code avant de le valider dans un r\u00e9f\u00e9rentiel.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78de324f34.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-166075-61e78de324f34.png\" alt=\"Biblioth\u00e8ques pour plugins WordPress, partie 1\"><\/a><\/p>\n<p>Le projet se d\u00e9crit comme :<\/p>\n<blockquote>\n<p>Il prend une base de code source PHP donn\u00e9e et recherche plusieurs probl\u00e8mes potentiels dans cette source.<\/p>\n<\/blockquote>\n<p>Comme avec de nombreuses biblioth\u00e8ques similaires, celle-ci peut configurer un ensemble de r\u00e8gles afin que vous puissiez facilement activer et d\u00e9sactiver les choses en fonction de ce que vous ou votre \u00e9quipe pr\u00e9f\u00e9rez.<\/p>\n<h3><a href=\"https:\/\/github.com\/nikic\/PHP-Parser\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Analyseur PHP<\/a><\/h3>\n<p>L&rsquo;id\u00e9e d&rsquo;avoir une configuration de biblioth\u00e8que d&rsquo;analyseur PHP pour analyser votre code semble un peu m\u00e9ta, non\u00a0? Je veux dire, vous avez le runtime PHP qui le fait, et de nombreux IDE le font \u00e9galement, mais cela fonctionne d&rsquo;une mani\u00e8re l\u00e9g\u00e8rement diff\u00e9rente.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78de6eec7f.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-166075-61e78de6eec7f.png\" alt=\"Biblioth\u00e8ques pour plugins WordPress, partie 1\"><\/a><\/p>\n<p>Depuis le r\u00e9f\u00e9rentiel\u00a0:<\/p>\n<blockquote>\n<p>Il s&rsquo;agit d&rsquo;un analyseur PHP 5.2 \u00e0 PHP 7.1 \u00e9crit en PHP. Son but est de simplifier l&rsquo;analyse et la manipulation de code statique.<\/p>\n<\/blockquote>\n<p>Pour ceux qui connaissent le fonctionnement des langages de programmation (et donc des grammaires), l&rsquo;id\u00e9e de faire <a href=\"https:\/\/en.wikipedia.org\/wiki\/Static_program_analysis\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">une analyse statique<\/a> du code aura du sens.<\/p>\n<p>Quoi qu&rsquo;il en soit, il s&rsquo;agit d&rsquo;une autre biblioth\u00e8que qui permet d&rsquo;am\u00e9liorer la qualit\u00e9 du code en r\u00e9duisant la complexit\u00e9 du code.<\/p>\n<h2>Plus \u00e0 venir<\/h2>\n<p>\u00c0 la fin de la s\u00e9rie, je vous expliquerai comment incorporer tout cela dans un <code>composer.json<\/code>fichier que vous pourrez utiliser dans votre projet.<\/p>\n<p>Lorsque vous travaillez sur une solution pour un client, vous devrez peut-\u00eatre modifier les versions de chacun de ces outils, mais vous constaterez que la plupart d&rsquo;entre eux offrent un support remontant \u00e0 PHP5.6 et jusqu&rsquo;\u00e0 PHP7.1.<\/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>Le premier article d&rsquo;une s\u00e9rie sur les biblioth\u00e8ques de plugins WordPress que mon \u00e9quipe et moi utilisons lorsque nous travaillons sur des solutions de haute qualit\u00e9 pour les autres.<\/p>\n","protected":false},"author":1,"featured_media":166076,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,717,1016,862],"tags":[1167],"class_list":["post-229681","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-developpeur","category-sites-utiles","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229681","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=229681"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229681\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/166076"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}