{"id":229785,"date":"2022-11-13T15:30:00","date_gmt":"2022-11-13T12:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229785"},"modified":"2022-11-13T15:33:57","modified_gmt":"2022-11-13T12:33:57","slug":"compositeur-pour-wordpress-partie-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/compositeur-pour-wordpress-partie-2\/","title":{"rendered":"Compositeur pour WordPress, partie 2"},"content":{"rendered":"\n<p>Dans cet article, je vais r\u00e9sumer ce que j&rsquo;ai commenc\u00e9 \u00e0 partager <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/compositeur-pour-wordpress-partie-1\/\" title=\"hier\">hier<\/a>: utiliser les outils et <a href=\"https:\/\/tommcfarlin.com\/tag\/libraries-for-wordpress-plugins\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">les biblioth\u00e8ques<\/a> que j&rsquo;ai partag\u00e9s avec Composer pour sniffer vos commits pendant le d\u00e9veloppement avant que le code n&rsquo;atteigne le r\u00e9f\u00e9rentiel.<\/p>\n<p>Id\u00e9alement, vous voudrez toujours voir quelque chose comme \u00e7a dans votre terminal chaque fois que vous validerez votre code\u00a0:<\/p>\n<p>Mais ce n&rsquo;est pas toujours le cas. Comme pour la plupart des choses, cependant, plus vous pratiquez, plus vous vous habituerez \u00e0 \u00e9crire du code qui passera automatiquement les diff\u00e9rents sniffs mis en place \u00e0 travers les diff\u00e9rentes r\u00e8gles (et leurs personnalisations).<\/p>\n<p>Avant de faire cela, cependant, vous devez configurer GrumPHP dans votre r\u00e9f\u00e9rentiel.<\/p>\n<h2>Composer pour WordPress\u00a0: renifler les commits<\/h2>\n<p>Hier, j&rsquo;ai fourni un \u00e9chantillon <code>composer.json<\/code>\u00a0. Aujourd&rsquo;hui, nous allons examiner un exemple de fichier de configuration GrumPHP et examiner ce que fait chaque partie.<\/p>\n<p>La chose importante \u00e0 noter est que bien que certains de ce que vous verrez ne soient pas atypiques pour un projet, vous pouvez affiner cela autant que vous le souhaitez pour chaque projet que vous utilisez. Parfois, vous voudrez peut-\u00eatre qu&rsquo;il soit plus cibl\u00e9 qu&rsquo;il ne l&rsquo;est actuellement ; d&rsquo;autres fois, vous ne vous souciez peut-\u00eatre pas de certains des reniflements qu&rsquo;il offre.<\/p>\n<h3>Une configuration initiale<\/h3>\n<p>Cela dit, une fois GrumPHP install\u00e9, il cr\u00e9era un <code>grumphp.yml<\/code>fichier presque vide pr\u00eat \u00e0 \u00eatre configur\u00e9. Voici par exemple <a href=\"https:\/\/gist.github.com\/tommcfarlin\/ab0cd032408fdc5cc30c035d77ea49ba#file-00-initial-grumphp-yml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ce que vous devriez voir<\/a> :<\/p>\n<pre><code>parameters:\n    git_dir:. bin_dir: vendor\/bin\n    tasks:<\/code><\/pre>\n<p>Notez qu&rsquo;il n&rsquo;y a rien d&rsquo;autre que de sp\u00e9cifier:<\/p>\n<ul>\n<li>l&#8217;emplacement du d\u00e9p\u00f4t,<\/li>\n<li>l&#8217;emplacement des binaires install\u00e9s via Composer,<\/li>\n<li>les t\u00e2ches \u00e0 ex\u00e9cuter.<\/li>\n<\/ul>\n<p>Notez que j&rsquo;ai toujours utilis\u00e9 &lsquo;.&rsquo; pour l&#8217;emplacement de mon r\u00e9f\u00e9rentiel car je ne l&rsquo;ai jamais install\u00e9 dans le r\u00e9f\u00e9rentiel sur lequel je travaille.<\/p>\n<p>Il en va de m\u00eame pour les binaires Composer. C&rsquo;est-\u00e0-dire qu&rsquo;apr\u00e8s avoir tout install\u00e9 via Composer, je les laisse \u00e0 leur emplacement initial.<\/p>\n<p>Et enfin, la directive initiale <code>tasks<\/code>est vide car il n&rsquo;y a encore rien \u00e0 ex\u00e9cuter. C&rsquo;est ce que je vais regarder dans la prochaine \u00e9tape.<\/p>\n<h3>Configurer GrumPHP<\/h3>\n<p>Une fois que vous avez install\u00e9 vos biblioth\u00e8ques et que vous \u00eates pr\u00eat \u00e0 configurer un peu, vous pouvez peut-\u00eatre faire quelque chose <a href=\"https:\/\/gist.github.com\/tommcfarlin\/ab0cd032408fdc5cc30c035d77ea49ba#file-01-sample-grumphp-yml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comme ceci<\/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>Je ne d\u00e9taillerai pas tout ci-dessus (car il n&rsquo;y a pas grand-chose \u00e0 d\u00e9crire) mais il y a encore quelques points \u00e0 souligner\u00a0:<\/p>\n<ul>\n<li>Notez qu&rsquo;il existe une liste de t\u00e2ches beaucoup plus longue que celle d\u00e9finie dans le r\u00e9pertoire initial. C&rsquo;est normal, et cela signifie que nous voulons ex\u00e9cuter ces outils en utilisant la configuration par d\u00e9faut pour chacun de ces outils.<\/li>\n<li>Quelques-unes des r\u00e8gles ont un <code>~<\/code>\u00e0 c\u00f4t\u00e9 d&rsquo;eux. Cela d\u00e9pend de la t\u00e2che en question, mais cela signifie g\u00e9n\u00e9ralement que nous voulons utiliser la configuration par d\u00e9faut.<\/li>\n<li>Il existe des t\u00e2ches telles que celles <code>phpparser<\/code>qui ont des sous-t\u00e2ches. Certains d&rsquo;entre eux, comme vous pouvez le voir ci-dessus, utilisent le comportement par d\u00e9faut. D&rsquo;autres choisissent de mettre sur liste noire des termes tels que <code>die<\/code>, <code>var_dump<\/code>, <code>exit<\/code>, etc. Cela signifie que, comme si la directive n&rsquo;\u00e9tait pas assez claire, nous ferons \u00e9chouer GrumPHP si l&rsquo;une de ces instructions est d\u00e9tect\u00e9e.<\/li>\n<li>De m\u00eame, jetez un \u0153il \u00e0 <code>phpmd<\/code>. Cela indique l&rsquo;ensemble de r\u00e8gles que nous utiliserons lors de la recherche de divers d\u00e9sordres dans le code. Dans ce cas, il pointe vers un <code>dist<\/code>\u00a0fichier mais peut pointer vers n&rsquo;importe quel ensemble de r\u00e8gles personnalis\u00e9 que vous avez d\u00e9fini.<\/li>\n<\/ul>\n<p>Ceci n&rsquo;est qu&rsquo;un exemple de ce que vous pouvez faire avec GrumPHP. Autrement dit, vous pouvez installer certaines biblioth\u00e8ques via Composer, les installer, puis personnaliser GrumPHP afin de tirer parti des fonctionnalit\u00e9s fournies.<\/p>\n<p>Comme pour d&rsquo;autres projets similaires, je recommande fortement de lire la <a href=\"https:\/\/github.com\/phpro\/grumphp\/blob\/master\/doc\/tasks.md\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentation<\/a> qui existe pour les diff\u00e9rentes t\u00e2ches qui s&rsquo;int\u00e8grent \u00e0 GrumPHP.<\/p>\n<h2>C&rsquo;est Composer pour WordPress ?<\/h2>\n<p>Oui et non. <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> est un gestionnaire de packages \u00e0 usage g\u00e9n\u00e9ral pour les projets PHP. cependant, nous ne semblons pas le voir beaucoup dans le monde de WordPress. Cela ne veut pas dire qu&rsquo;il n&rsquo;est pas utilis\u00e9 (il l&rsquo;est), mais il ne suffit pas d&rsquo;\u00eatre conscient de Composer et de savoir comment l&rsquo;utiliser.<\/p>\n<p>Au lieu de cela, je pense qu&rsquo;il est important de savoir comment utiliser Composer pour WordPress afin que nous puissions \u00e9crire le plus haut niveau de code de qualit\u00e9 possible tout en nous assurant que nous respectons les normes de codage que nous avons \u00e9galement choisi d&#8217;employer. .<\/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>Ceci est le dernier d&rsquo;une s\u00e9rie en deux parties sur la configuration de Composer pour le d\u00e9veloppement WordPress afin que vous puissiez \u00e9crire du code de meilleure qualit\u00e9 dans votre travail).<\/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":[893,717,801,841],"tags":[1167],"class_list":["post-229785","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-php-3","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229785","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=229785"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229785\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/223641"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}