{"id":229411,"date":"2022-11-03T10:01:00","date_gmt":"2022-11-03T07:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229411"},"modified":"2022-11-09T07:03:12","modified_gmt":"2022-11-09T04:03:12","slug":"prototypage-rapide-avec-wordpress-analyse-de-concept","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-avec-wordpress-analyse-de-concept\/","title":{"rendered":"Prototypage rapide avec WordPress : analyse de concept"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-avec-wordpress-du-concept-au-plugin\/\" title=\"Dans le post pr\u00e9c\u00e9dent\" >Dans le post pr\u00e9c\u00e9dent<\/a>, j&rsquo;ai commenc\u00e9 \u00e0 parcourir le processus de prise de l&rsquo;id\u00e9e d&rsquo;un plugin qui le prototype rapidement en quelque chose qui fonctionne dans WordPress. Et bien que cela fonctionne, il ne suit pas n\u00e9cessairement de principes orient\u00e9s objet, ni dans un endroit o\u00f9 nous pouvons facilement continuer \u00e0 ajouter des fonctionnalit\u00e9s.<\/p>\n<p>Non, ce n&rsquo;est pas un argument pour expliquer pourquoi l&rsquo;orientation objet est meilleure. Il se trouve que c&rsquo;est ma fa\u00e7on pr\u00e9f\u00e9r\u00e9e d&rsquo;\u00e9crire du code, donc je l&rsquo;aborde de cette fa\u00e7on.<\/p>\n<p>Je sais que l&rsquo;exemple de code que je donne est simple et je sais qu&rsquo;on peut faire valoir que quelque chose comme \u00e7a peut \u00eatre laiss\u00e9 tel quel. Mais le but de ceci est de montrer comment prendre un concept, le prototyper, puis le transformer en quelque chose qui suit les principes orient\u00e9s objet.<\/p>\n<p>Et, d&rsquo;apr\u00e8s mon exp\u00e9rience, il est beaucoup plus difficile de le faire avec un exemple complexe d\u00e8s le d\u00e9part. si vous perdez des lecteurs d\u00e8s le d\u00e9but, alors quel espoir y a-t-il pour eux de comprendre ce qui s&rsquo;en vient\u00a0?<\/p>\n<p>Cela dit, nous allons jeter un \u0153il au code du post pr\u00e9c\u00e9dent et faire une petite analyse de concept dessus pour voir ce qui pourrait bien fonctionner dans une classe et comment nous pourrions commencer \u00e0 l&rsquo;organiser en utilisant des classes, espaces de <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/espaces-de-noms-et-chargement-automatique-dans-wordpress\/\" title=\"noms\" >noms<\/a>, etc.<\/p>\n<h2>Analyse conceptuelle<\/h2>\n<p>Chaque fois qu&rsquo;il s&rsquo;agit de programmation, il est si facile de vouloir se lancer imm\u00e9diatement dans l&rsquo;\u00e9criture de code, puis de le soumettre jusqu&rsquo;\u00e0 ce qu&rsquo;il fasse quelque chose que nous voulons.<\/p>\n<p>Et une fois que cela fonctionne, nous avons l&rsquo;impression d&rsquo;avoir termin\u00e9 et nous pouvons passer \u00e0 la t\u00e2che suivante. Mais pour les grands projets, ce n&rsquo;est pas toujours le cas. En fait, il est souvent pr\u00e9f\u00e9rable de faire un peu d&rsquo;analyse de concept ou d&rsquo;analyse orient\u00e9e objet sur votre conception avant d&rsquo;aller de l&rsquo;avant.<\/p>\n<p>Se lancer simplement dans le codage n&rsquo;est pas toujours la meilleure approche.<\/p>\n<h3>Un cas \u00e0 analyser<\/h3>\n<p>Exemple concret\u00a0: au moment d&rsquo;\u00e9crire ces lignes, l&rsquo;un de mes co\u00e9quipiers et moi discutons de l&rsquo;opportunit\u00e9 d&rsquo;\u00e9tendre une classe ou d&rsquo;\u00e9crire une nouvelle classe pour g\u00e9rer les informations de g\u00e9olocalisation des donn\u00e9es extraites de l&rsquo;API Google Maps.<\/p>\n<p>Puis-je l&rsquo;aile et \u00e9crire quelque chose qui fonctionne? Bien s\u00fbr. Mais s&rsquo;int\u00e9grera-t-il bien \u00e0 l&rsquo;application? Non sans analyse de concept, planification et coordination avec le reste du syst\u00e8me.<\/p>\n<p>Et c&rsquo;est bien l\u00e0 le but de l&rsquo;analyse.<\/p>\n<h3>Analyser notre travail<\/h3>\n<p>Alors, qu&rsquo;est-ce que cela signifie pour le plugin que nous avons examin\u00e9 hier\u00a0? En ce moment, nous avons ce qui suit :<\/p>\n<ul>\n<li>une fonction charg\u00e9e de cr\u00e9er une meta box et d&rsquo;en afficher le contenu,<\/li>\n<li>une fonction d&rsquo;interrogation de la base de donn\u00e9es et de r\u00e9cup\u00e9ration des derniers messages les plus r\u00e9cents,<\/li>\n<li>une fonction pour afficher les r\u00e9sultats dans la meta box<\/li>\n<li>une fonction pour afficher un message lorsqu&rsquo;il n&rsquo;y a pas de r\u00e9sultats dans la m\u00e9ta-bo\u00eete<\/li>\n<\/ul>\n<p>De plus, un certain nombre de ces fonctions sont li\u00e9es aux crochets qui font partie de l&rsquo;API WordPress. A savoir, la fonction de cr\u00e9ation de la meta box est accroch\u00e9e \u00e0 WordPress et sa fonction compagnon de rendu de l&rsquo;affichage font toutes partie du m\u00eame composant.<\/p>\n<p>Ensuite, nous avons des fonctionnalit\u00e9s pour interroger la base de donn\u00e9es et nous avons des fonctions directement li\u00e9es aux vues.<\/p>\n<p>Alors, \u00e0 quoi cela pourrait-il ressembler si nous devions sch\u00e9matiser cela dans diverses classes et fichiers qui aideraient \u00e0 cr\u00e9er cela d&rsquo;une mani\u00e8re plus orient\u00e9e objet?<\/p>\n<h3>Pas de solution unique<\/h3>\n<p>Il n&rsquo;y a pas de solution unique et certaines solutions sont beaucoup plus avanc\u00e9es que d&rsquo;autres. Mais puisque j&rsquo;essaie de trouver un \u00e9quilibre ici, je vais aborder cela d&rsquo;une mani\u00e8re plus simple que de trop travailler avec l&rsquo;abstraction, l&rsquo;h\u00e9ritage, les interfaces et tout \u00e7a.<\/p>\n<h3>Se concentrer sur ce que nous avons<\/h3>\n<p>Pour l&rsquo;instant, concentrons-nous sur les classes individuelles et les responsabilit\u00e9s qu&rsquo;elles peuvent avoir. Par exemple:<\/p>\n<ul>\n<li>Je pense que nous allons avoir besoin d&rsquo;une classe qui repr\u00e9sente la m\u00e9ta-bo\u00eete. Cela devrait \u00eatre responsable de la cr\u00e9ation de la m\u00e9ta-bo\u00eete.<\/li>\n<li>Nous aurons \u00e9galement besoin d&rsquo;une classe charg\u00e9e d&rsquo;afficher le contenu de la m\u00e9ta-bo\u00eete. Vous pensez peut-\u00eatre que l&rsquo;inclusion d&rsquo;une fonction dans la classe pour la m\u00e9ta-bo\u00eete fonctionne bien. Cela fait; cependant, si vous voulez consid\u00e9rer chaque classe comme ayant une responsabilit\u00e9 unique, nous pouvons cr\u00e9er une classe sp\u00e9cifiquement pour l&rsquo;affichage et sp\u00e9cifiquement pour la m\u00e9ta-bo\u00eete, puis injecter l&rsquo;affichage dans la m\u00e9ta-bo\u00eete lors de l&rsquo;instanciation. Nous en reparlerons plus tard.<\/li>\n<\/ul>\n<p>\u00c0 ce stade, notre diagramme pourrait ressembler \u00e0 ceci\u00a0:<\/p>\n<p>D\u00e9composer la m\u00e9ta-bo\u00eete.<\/p>\n<p>Ensuite, nous devons consid\u00e9rer les autres fonctionnalit\u00e9s. \u00c0 savoir, la fonctionnalit\u00e9 d&rsquo;affichage des r\u00e9sultats dans la m\u00e9ta-bo\u00eete et la fonctionnalit\u00e9 d&rsquo;affichage des r\u00e9sultats lorsqu&rsquo;il n&rsquo;y en a pas.<\/p>\n<p>Afin d&rsquo;afficher quoi que ce soit dans la m\u00e9ta-bo\u00eete, nous devons avoir un moyen d&rsquo;interroger la base de donn\u00e9es pour r\u00e9cup\u00e9rer les r\u00e9sultats. \u00c0 partir de l\u00e0, nous devons ensuite pouvoir d\u00e9terminer s&rsquo;il y a des r\u00e9sultats, s&rsquo;il n&rsquo;y en a pas, puis injecter ces r\u00e9sultats dans la vue.<\/p>\n<p>Compte tenu de ces informations, il semble que nous ayons besoin d&rsquo;une classe pour interroger la base de donn\u00e9es, puis nous avons besoin d&rsquo;une classe pour diffuser un message dans l&rsquo;affichage de la m\u00e9ta-bo\u00eete.<\/p>\n<p>Peut-\u00eatre qu&rsquo;une fa\u00e7on d&rsquo;organiser les cours ressemblerait \u00e0 ceci :<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e79938d88c8.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-166719-61e79938d88c8.png\" alt=\"Prototypage rapide avec WordPress : analyse de concept\" ><\/a><\/p>\n<p>Interrogation de la base de donn\u00e9es et pr\u00e9paration des messages.<\/p>\n<p>La version finale du diagramme est peut-\u00eatre un peu \u00e0 l&rsquo;\u00e9troit, mais nous examinons finalement quelque chose comme ceci\u00a0:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e7993eaf874.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-166719-61e7993eaf874.png\" alt=\"Prototypage rapide avec WordPress : analyse de concept\" ><\/a><\/p>\n<p>L&rsquo;organisation d\u00e9finitive de nos cours.<\/p>\n<p>Aux fins d&rsquo;explication :<\/p>\n<ul>\n<li>Le r\u00e9cup\u00e9rateur de messages demande \u00e0 la base de donn\u00e9es les trois derniers messages les plus r\u00e9cents.<\/li>\n<li>Le messager de la poste d\u00e9terminera quel message injecter \u00e0 l&rsquo;affichage.<\/li>\n<li>L&rsquo;affichage restituera le message qui a \u00e9t\u00e9 d\u00e9fini.<\/li>\n<li>La bo\u00eete de m\u00e9ta rendra son affichage au navigateur Web.<\/li>\n<\/ul>\n<p>Nous avons donc essentiellement pris quelques fonctions qui \u00e9taient accroch\u00e9es \u00e0 WordPress et les avons d\u00e9compos\u00e9es en composants qui peuvent communiquer entre eux, chacun \u00e9tant relativement facile \u00e0 utiliser et ne faisant pas plus d&rsquo;un seul travail.<\/p>\n<h2>Le convertir en code<\/h2>\n<p>Maintenant que nous avons une id\u00e9e de la fa\u00e7on dont nous pouvons convertir le concept pr\u00e9c\u00e9dent en code, nous verrons comment le faire dans les deux prochains articles.<\/p>\n<p>Notez que la fa\u00e7on dont vous choisissez d&rsquo;impl\u00e9menter votre code ou de concevoir vos classes peut \u00eatre un peu diff\u00e9rente de ce que j&rsquo;ai ci-dessus et vous pouvez avoir des suggestions sur la fa\u00e7on de mieux organiser ce qui est ci-dessus. Si c&rsquo;est le cas, laissez un commentaire.<\/p>\n<p>Dans le prochain article, nous verrons comment convertir cela en code fonctionnel et, apr\u00e8s cela, nous verrons comment l&rsquo;organiser en espaces de noms appropri\u00e9s et en organisation de fichiers appropri\u00e9e.<\/p>\n<h2>Messages de la s\u00e9rie<\/h2>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-avec-wordpress-du-concept-au-plugin\/\" title=\"Prototypage rapide avec WordPress\u00a0: du concept au plugin\" >Prototypage rapide avec WordPress\u00a0: du concept au plugin<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/concept-analysis\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Prototypage rapide avec WordPress: analyse de concept<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-prototyper-pour-coder-partie-1\/\" title=\"Prototypage rapide: Prototyper pour coder, partie 1\">Prototypage rapide: Prototyper pour coder, partie 1<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-prototyper-pour-coder-partie-2\/\" title=\"Prototypage rapide: Prototyper pour coder, partie 2\">Prototypage rapide: Prototyper pour coder, partie 2<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-presentation-du-chargement-automatique\/\" title=\"Prototypage rapide\u00a0: pr\u00e9sentation du chargement automatique\">Prototypage rapide\u00a0: pr\u00e9sentation du chargement automatique<\/a><\/li>\n<\/ol>\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>Il est souvent pr\u00e9f\u00e9rable de faire un peu d&rsquo;analyse de concept ou d&rsquo;analyse orient\u00e9e objet sur votre conception avant d&rsquo;aller de l&rsquo;avant.<\/p>\n","protected":false},"author":1,"featured_media":223990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,717,841],"tags":[1167],"class_list":["post-229411","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-developpeur","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229411","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=229411"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229411\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}