{"id":229705,"date":"2022-11-11T10:44:00","date_gmt":"2022-11-11T07:44:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229705"},"modified":"2022-11-09T16:01:40","modified_gmt":"2022-11-09T13:01:40","slug":"compositeur-pour-wordpress-partie-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/compositeur-pour-wordpress-partie-1\/","title":{"rendered":"Compositeur pour WordPress, partie 1"},"content":{"rendered":"\n<p>D&rsquo;accord, donc apr\u00e8s avoir parcouru toutes les diff\u00e9rentes biblioth\u00e8ques qui peuvent aider \u00e0 am\u00e9liorer la qualit\u00e9 du code de votre travail, cela soul\u00e8ve toujours une question\u00a0:<\/p>\n<p>Comment pouvons-nous faire fonctionner ces projets par rapport \u00e0 notre base de code\u00a0?<\/p>\n<p>En bref, cela n\u00e9cessite <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Si vous ne l&rsquo;avez jamais utilis\u00e9, j&rsquo;ai d\u00e9j\u00e0 <a href=\"https:\/\/tommcfarlin.com\/setting-php-and-composer-in-mamp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e9crit bri\u00e8vement \u00e0 ce sujet<\/a>, mais j&rsquo;ai l&rsquo;intention de fournir les bases de ce dont vous avez besoin pour commencer \u00e0 l&rsquo;utiliser et les biblioth\u00e8ques susmentionn\u00e9es dans votre travail.<\/p>\n<p>Dans cet article et dans le suivant, je vais partager comment tout configurer localement sous la forme la plus basique, puis comment il s&rsquo;int\u00e8gre \u00e0 Git afin que vous puissiez commencer \u00e0 l&rsquo;utiliser au quotidien.<\/p>\n<h2>Configuration de Composer pour WordPress<\/h2>\n<p>Il y a beaucoup d&rsquo;informations qui peuvent (et je dirais qu&rsquo;elles devraient aller dans un fichier pour Composer). Cela inclut des \u00e9l\u00e9ments tels que les informations sur l&rsquo;auteur, le PSR, les informations, etc. Mais cela d\u00e9passe vraiment le cadre de cet article. Au lieu de cela, je souhaite partager le strict minimum n\u00e9cessaire pour obtenir ces informations configur\u00e9es et configur\u00e9es.<\/p>\n<h3>Un exemple de r\u00e9pertoire<\/h3>\n<p>Supposons que, pendant un instant, vous \u00eates sur le point de commencer \u00e0 travailler sur un plugin ou quelque chose li\u00e9 \u00e0 WordPress qui n\u00e9cessitera les diff\u00e9rentes biblioth\u00e8ques discut\u00e9es dans la s\u00e9rie pr\u00e9c\u00e9dente. Et lors de la configuration du r\u00e9pertoire pour cela, vous aurez tr\u00e8s peu de fichiers. Peut-\u00eatre quelques fichiers PHP vides, des ressources, etc. Cela ressemblera peut-\u00eatre \u00e0 ceci\u00a0:<\/p>\n<p>Certes, l&rsquo;exemple ci-dessus est d\u00e9j\u00e0 un peu en avance sur ce \u00e0 quoi votre travail pourrait ressembler car\u00a0:<\/p>\n<ul>\n<li>Il existe un <code>composer.lock<\/code>\u00a0fichier montrant que Composer a \u00e9t\u00e9 ex\u00e9cut\u00e9,<\/li>\n<li>Il a un <code>vendor<\/code>\u00a0r\u00e9pertoire qui montre que les biblioth\u00e8ques ont \u00e9t\u00e9 install\u00e9es via Composer,<\/li>\n<li>Il existe un <code>grumphp.yml<\/code>\u00a0fichier qui d\u00e9finit comment GrumPHP devrait fonctionner (et je couvrirai cela plus tard) lors de la d\u00e9tection de code.<\/li>\n<\/ul>\n<p>Mais l&rsquo;essentiel de ce qui pr\u00e9c\u00e8de est le m\u00eame\u00a0: vous avez <code>composer.json<\/code>et il d\u00e9finit et inclut tout ce dont nous avons besoin en fonction du message pr\u00e9c\u00e9dent. Alors, comment le mettons-nous en place\u00a0?<\/p>\n<h3>Configuration du compositeur<\/h3>\n<p>Tout d&rsquo;abord, vous devez avoir une id\u00e9e de la fa\u00e7on dont vous allez structurer votre plugin. Par exemple, j&rsquo;ai une configuration de plugin comme ceci:<\/p>\n<ul>\n<li>Tous les fichiers PHP r\u00e9sident dans le <code>src<\/code>\u00a0r\u00e9pertoire,<\/li>\n<li>Tous les fichiers CSS, JavaScript, images, etc., sont dans le <code>assets<\/code>\u00a0r\u00e9pertoire,<\/li>\n<li>Le <code>vendor<\/code>\u00a0r\u00e9pertoire est pour les choses qui sont install\u00e9es via Composer,<\/li>\n<li><code>views<\/code>\u00a0est ce qui est utilis\u00e9 dans le front-end du projet.<\/li>\n<\/ul>\n<p>Par exemple:<\/p>\n<\/p>\n<p>Deuxi\u00e8mement, dans le r\u00e9pertoire en question, vous voudrez cr\u00e9er un fichier appel\u00e9 <code>composer.json<\/code>. Cela peut \u00eatre fait via Terminal en \u00e9mettant simplement une <code>touch<\/code>\u00a0commande, ou vous pouvez le cr\u00e9er dans votre IDE.<\/p>\n<p>La chose importante \u00e0 retenir de cela est qu&rsquo;il existe un <code>src<\/code>\u00a0r\u00e9pertoire car c&rsquo;est le r\u00e9pertoire qui contient nos fichiers PHP et c&rsquo;est le r\u00e9pertoire que nous voulons avoir renifl\u00e9.<\/p>\n<h3>Un fichier de composition de base<\/h3>\n<p>Cela dit, voici un <code>composer.json<\/code>fichier de base que vous pouvez utiliser dans vos projets bas\u00e9s sur la s\u00e9rie pr\u00e9c\u00e9dente et sur la base de ce qui est <a href=\"https:\/\/gist.github.com\/tommcfarlin\/60ac0e1fba9fa152fc57622e3866d6dc\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">partag\u00e9<\/a> ci-dessous\u00a0:<\/p>\n<pre><code>{\n  \"name\": \"pressware\/demo-wordpress-plugin\",\n  \"description\": \"This file is used to show how to configure a WordPress plugin using Composer.\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Pressware\": \"src\/\"\n    }\n  },\n  \"require-dev\": {\n    \"phpro\/grumphp\": \"^0.11.6\",\n    \"phpmd\/phpmd\": \"^2.6\",\n    \"phpunit\/phpunit\": \"5.7.21\",\n    \"nikic\/php-parser\": \"^3.0\",\n    \"sebastian\/phpcpd\": \"^3.0\",\n    \"povils\/phpmnd\": \"^1.1\",\n    \"squizlabs\/php_codesniffer\": \"^3.0\",\n    \"jakub-onderka\/php-parallel-lint\": \"^0.9.2\",\n    \"sensiolabs\/security-checker\": \"^4.0\"\n  }\n}<\/code><\/pre>\n<p>En regardant le fichier ci-dessus, voici comment l&rsquo;analyser\u00a0:<\/p>\n<ol>\n<li>Les lignes 2 et 3 donnent une petite description de ce qu&rsquo;est le plugin. Ce sont \u00e9galement d&rsquo;autres domaines dans ce dossier pour donner plus d&rsquo;informations sur ce qui doit \u00eatre fait.<\/li>\n<li>Les lignes 4 \u00e0 8 sont importantes car elles expliquent que nous utilisons <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> pour le chargement automatique et que tous les fichiers rel\u00e8vent de l&rsquo;espace de noms de niveau sup\u00e9rieur de <code>Pressware<\/code>et que les fichiers PHP se trouvent dans le <code>src<\/code>\u00a0r\u00e9pertoire.<\/li>\n<li>Les lignes 9 \u00e0 18 couvrent tous les fichiers couverts dans la s\u00e9rie pr\u00e9c\u00e9dente.<\/li>\n<\/ol>\n<p>Ensuite, lancez la commande suivante dans votre terminal\u00a0:<\/p>\n<p><code>$ composer install<\/code><\/p>\n<p>Et cela installera ces packages.<\/p>\n<h2>Qu&rsquo;en est-il des commits\u00a0?<\/h2>\n<p>Pour vous assurer que vous supprimez et g\u00e9rez correctement les commits, il est important que vous configuriez GrumPHP afin qu&rsquo;il surveille les fichiers. Mais j&rsquo;y reviendrai dans le prochain post.<\/p>\n<p>En attendant, c&rsquo;est peut-\u00eatre une bonne occasion de configurer un plugin de d\u00e9monstration et de s&rsquo;entra\u00eener avec le code ci-dessus. Il peut \u00eatre difficile de le configurer correctement la premi\u00e8re fois. Heureusement, de nombreuses erreurs de sortie sont vraiment faciles \u00e0 comprendre, il est donc relativement simple de les r\u00e9soudre.<\/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 premier 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":166003,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,748,1016],"tags":[1167],"class_list":["post-229705","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-open-source-projektmanagement-2","category-sites-utiles","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229705","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=229705"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229705\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/166003"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}