{"id":230461,"date":"2022-11-30T19:45:00","date_gmt":"2022-11-30T16:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230461"},"modified":"2022-11-09T22:29:37","modified_gmt":"2022-11-09T19:29:37","slug":"une-maniere-orientee-objet-de-travailler-avec-des-modeles-et-des-applications-web","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/une-maniere-orientee-objet-de-travailler-avec-des-modeles-et-des-applications-web\/","title":{"rendered":"Une mani\u00e8re orient\u00e9e objet de travailler avec des mod\u00e8les et des applications Web"},"content":{"rendered":"\n<p>Lorsque nous parlons du concept de mod\u00e8les dans la programmation orient\u00e9e objet, nous faisons g\u00e9n\u00e9ralement r\u00e9f\u00e9rence \u00e0 une classe qui est une repr\u00e9sentation des donn\u00e9es stock\u00e9es dans la base de donn\u00e9es.<\/p>\n<p>Autrement dit, lorsque les informations sont stock\u00e9es dans des lignes et des colonnes, nous remplissons une classe, ses attributs, etc. avec ces informations afin que nous puissions les transmettre dans l&rsquo;application, les manipuler au besoin, puis \u00e9ventuellement s\u00e9rialiser le donn\u00e9es vers la base de donn\u00e9es.<\/p>\n<p>Mais dans une application Web, il est juste de supposer que le mod\u00e8le devra peut-\u00eatre \u00eatre utilis\u00e9 par le frontal. Autrement dit, imaginez une requ\u00eate frontale faisant un appel au serveur, demandant un mod\u00e8le (ou une collection de mod\u00e8les), puis les rendant sur le frontal.<\/p>\n<p>Bien que cet article particulier ne soit pas orient\u00e9 code, je pense toujours qu&rsquo;il vaut la peine de r\u00e9fl\u00e9chir au processus de traduction d&rsquo;un mod\u00e8le \u00e0 partir du serveur, puis de le rendre sur le front-end de l&rsquo;application Web.<\/p>\n<h2>Travailler avec des mod\u00e8les et des applications Web<\/h2>\n<p>Imaginez un instant que votre application dispose d&rsquo;un mod\u00e8le Employee. Ce mod\u00e8le peut inclure une vari\u00e9t\u00e9 d&rsquo;attributs, mais il est prudent de supposer que tous les employ\u00e9s auraient\u00a0:<\/p>\n<ul>\n<li>un pr\u00e9nom,<\/li>\n<li>un nom de famille,<\/li>\n<li>un identifiant d&#8217;employ\u00e9,<\/li>\n<li>et une adresse e-mail<\/li>\n<\/ul>\n<p>La fa\u00e7on dont ces informations sont stock\u00e9es dans la base de donn\u00e9es n&rsquo;est pas totalement hors de propos, mais ce n&rsquo;est pas si important pour cette discussion.<\/p>\n<p>Par exemple, il existe peut-\u00eatre un seul enregistrement contenant toutes ces informations stock\u00e9es dans une cha\u00eene JSON. D&rsquo;un autre c\u00f4t\u00e9, il y a peut-\u00eatre une table d&#8217;employ\u00e9s o\u00f9 chaque ligne repr\u00e9sente un employ\u00e9, puis chaque colonne repr\u00e9sente un attribut.<\/p>\n<p>Les d\u00e9tails sur la mani\u00e8re dont les informations sont traduites de la base de donn\u00e9es (ou, plus g\u00e9n\u00e9ralement, du magasin de donn\u00e9es) \u00e0 la classe ne sont pas aussi importants.<\/p>\n<p>Habituellement, cependant, nous verrons quelque chose comme ceci:<\/p>\n<ol>\n<li>Il y a une classe qui demande l&rsquo;information,<\/li>\n<li>Les informations sont transmises \u00e0 une <strong>Usine Simple<\/strong> ,<\/li>\n<li>La <strong>Simple Factory<\/strong> instancie le <strong>Model<\/strong> ,<\/li>\n<li>Le <strong>mod\u00e8le<\/strong> est ensuite transmis \u00e0 la classe tierce qui l&rsquo;a demand\u00e9.<\/li>\n<\/ol>\n<p>D&rsquo;un point de vue pictural, vous pouvez le voir comme ceci :<\/p>\n<p>\u00c0 partir de ce point, le <strong>mod\u00e8le<\/strong> est transmis \u00e0 travers l&rsquo;application. Mais c&rsquo;est l\u00e0 que le point initial de cet article entre en jeu\u00a0: comment passer une instance de <strong>Model<\/strong> (ou une collection de <strong>Models<\/strong>) au front-end de l&rsquo;application\u00a0?<\/p>\n<h2>Le flux de l&rsquo;application Web<\/h2>\n<p>Par souci de simplicit\u00e9, supposons que nous allons utiliser un seul mod\u00e8le, puis, si je r\u00e9examine ce concept du point de vue du code, nous pourrons plonger un peu plus.<\/p>\n<p>Le flux g\u00e9n\u00e9ral d&rsquo;une application Web ressemblera cependant \u00e0 ceci\u00a0:<\/p>\n<ol>\n<li>Un utilisateur d\u00e9clenche une action qui demande une instance du mod\u00e8le,<\/li>\n<li>Le frontal fait un appel \u00e0 un point de terminaison sur le serveur,<\/li>\n<li>Le serveur lit les requ\u00eates et v\u00e9rifie qu&rsquo;elles sont valides,<\/li>\n<li>Envoie ensuite une repr\u00e9sentation du mod\u00e8le au frontal.<\/li>\n<\/ol>\n<p>D&rsquo;autres d\u00e9veloppeurs peuvent ne pas \u00eatre d&rsquo;accord (ce qui est toujours le bienvenu et m\u00e9rite d&rsquo;\u00eatre discut\u00e9, \u00e0 mon avis), mais j&rsquo;ai constat\u00e9 que la s\u00e9rialisation de l&rsquo;instance du mod\u00e8le en JSON facilite beaucoup le travail sur le front-end en raison de la fonctionnalit\u00e9 JavaScript car il se rapporte \u00e0, ahem, JSON.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163595-61e75570192c9.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-163595-61e75570192c9.png\" alt=\"Une mani\u00e8re orient\u00e9e objet de travailler avec des mod\u00e8les et des applications Web\" ><\/a><\/p>\n<p>Autrement dit:<\/p>\n<ol>\n<li>on prend le mod\u00e8le,<\/li>\n<li>s\u00e9rialisez-le en JSON,<\/li>\n<li>l&rsquo;envoyer \u00e0 travers le fil,<\/li>\n<li>puis d\u00e9s\u00e9rialisez-le sur le front-end en une repr\u00e9sentation JavaScript de lui-m\u00eame.<\/li>\n<\/ol>\n<p>Cela nous permet de le manipuler comme nous le ferions c\u00f4t\u00e9 serveur\u00a0; cependant, nous avons affaire \u00e0 un objet JavaScript. De plus, cela nous permet \u00e9galement d&rsquo;apporter certaines modifications et de renvoyer les informations au serveur dans un \u00e9tat diff\u00e9rent \u00e0 partir duquel elles ont \u00e9t\u00e9 envoy\u00e9es.<\/p>\n<p>En fin de compte, cela nous permet de sauvegarder les donn\u00e9es dans la base de donn\u00e9es.<\/p>\n<h2>Une perspective de haut niveau<\/h2>\n<p>Et c&rsquo;est le cycle de vie de haut niveau consistant \u00e0 transmettre des informations d&rsquo;une base de donn\u00e9es \u00e0 un mod\u00e8le vers le front-end et vice-versa.<\/p>\n<p>Souvent, cependant, il est utile de voir cela dans le code, alors peut-\u00eatre que dans un prochain article, je fournirai une s\u00e9rie d&rsquo;articles qui expliqueront comment proc\u00e9der.<\/p>\n<p>En attendant, cependant, il ne devrait pas \u00eatre difficile de traduire vos impl\u00e9mentations dans le flux de travail Model-Serialization-Request-Send, comme indiqu\u00e9 dans cet article.<\/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>Comprendre comment r\u00e9fl\u00e9chir au processus de travail avec des mod\u00e8les c\u00f4t\u00e9 serveur et des applications Web via des mod\u00e8les, des usines, etc.<\/p>\n","protected":false},"author":1,"featured_media":224094,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,728],"tags":[1167],"class_list":["post-230461","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-javascript-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230461","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=230461"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230461\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224094"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=230461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=230461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=230461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}