{"id":234140,"date":"2022-11-15T10:35:00","date_gmt":"2022-11-15T07:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234140"},"modified":"2022-11-15T10:38:18","modified_gmt":"2022-11-15T07:38:18","slug":"pourquoi-sembeter-avec-le-chargement-automatique-dans-wordpress-partie-3","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/pourquoi-sembeter-avec-le-chargement-automatique-dans-wordpress-partie-3\/","title":{"rendered":"Pourquoi s&#8217;emb\u00eater avec le chargement automatique dans WordPress, partie 3"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/pourquoi-sembeter-avec-le-chargement-automatique-dans-wordpress-partie-2\/\" title=\"Dans le dernier article\">Dans le dernier article<\/a>, j&rsquo;ai dit que nous ne pouvions pas nous permettre le m\u00eame luxe que les langages compil\u00e9s et typ\u00e9s statiquement. Plus pr\u00e9cis\u00e9ment, je parlais de l&rsquo;id\u00e9e de ne pas avoir \u00e0 traiter avec des chargeurs automatiques.<\/p>\n<p>Au lieu de cela, les langages compil\u00e9s peuvent prendre tous les fichiers qui composent le programme, les traiter et les regrouper en un seul binaire.<\/p>\n<p>Mais pour ce faire, il a besoin d&rsquo;un type sp\u00e9cifique de programme pour le faire.<\/p>\n<h2>Chargement automatique dans WordPress: Linkers et Autoloaders<\/h2>\n<p>C&rsquo;est-\u00e0-dire qu&rsquo;il utilise un utilitaire appel\u00e9 un \u00e9diteur de <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linker_(computing)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">liens<\/a>. Je couvrirai cela bri\u00e8vement momentan\u00e9ment, mais voir le r\u00f4le qu&rsquo;il joue dans le contexte des langages compil\u00e9s peut aider \u00e0 \u00e9tablir une analogie avec le fonctionnement du chargement automatique dans WordPress (et PHP).<\/p>\n<h3>Qu&rsquo;est-ce qu&rsquo;un Linker ?<\/h3>\n<p>Selon le langage avec lequel vous travaillez, en particulier avec les langages de programmation orient\u00e9s objet, il est probable que le code soit r\u00e9parti sur plusieurs fichiers.<\/p>\n<p>De plus, chacun de ces fichiers va \u00eatre regroup\u00e9 dans leurs packages (nous les appelons espaces de noms PHP, et la plupart des langages compil\u00e9s font de m\u00eame). Ainsi, \u00e0 des fins de d\u00e9monstration, supposons que les fichiers sont inclus dans leurs espaces de noms.<\/p>\n<p>Ensuite, dans toute la base de code, vous avez tous ces fichiers qui sont li\u00e9s via des espaces de noms mais r\u00e9partis dans des fichiers s\u00e9par\u00e9s.<\/p>\n<p>Quand vient le temps de compiler tout cela en un seul binaire ex\u00e9cutable, un programme appel\u00e9 un \u00e9diteur de liens analyse le code et le fait par magie pour aider \u00e0 cr\u00e9er un seul binaire ex\u00e9cutable (par opposition \u00e0 une collection de fichiers comme nous avons l&rsquo;habitude de voir dans projets bas\u00e9s sur PHP).<\/p>\n<h3>Et le chargement automatique\u00a0?<\/h3>\n<p>Alors, quelles sont les similitudes entre le chargement automatique et la liaison\u00a0? Comme mentionn\u00e9, les projets que nous construisons dans WordPress (et PHP) r\u00e9sident syst\u00e9matiquement dans des fichiers s\u00e9par\u00e9s. Autrement dit, ils ne seront jamais compil\u00e9s dans un seul fichier.<\/p>\n<p>Je dirais qu&rsquo;il \u00e9tait une fois (bien que cela arrive toujours), nous utilisons <a href=\"https:\/\/php.net\/manual\/en\/function.include-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">include_once<\/a> ou <a href=\"https:\/\/php.net\/manual\/en\/function.require-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">require_once<\/a> pour apporter toutes les d\u00e9pendances dont nous avons besoin. Mais le chargement automatique \u00e9limine la n\u00e9cessit\u00e9 de le faire.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165652-61e7858e62d47.jpg\" 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-165652-61e7858e62d47.jpg\" alt=\"Pourquoi s&#039;emb\u00eater avec le chargement automatique dans WordPress, partie 3\"><\/a><\/p>\n<p>\u00c9crire manuellement un chargeur automatique (sans utiliser PSR4).<\/p>\n<p>Au lieu de cela, un chargeur automatique peut prendre le code que nous avons chaque fois que nous instancions une classe, puis chargeons automatiquement (d&rsquo;o\u00f9 son nom) le fichier sans avoir besoin d&rsquo;inclure manuellement le fichier.<\/p>\n<h3>L&rsquo;analogie<\/h3>\n<p>Alors qu&rsquo;un \u00e9diteur de liens analysera la base de code d&rsquo;un programme et assemblera automatiquement le binaire, un chargeur automatique aura besoin d&rsquo;un certain type de configuration pour lui faire savoir o\u00f9 se trouvent les classes, comment localiser un fichier sur le syst\u00e8me de fichiers en fonction de son espace de noms et de son nom de classe, et bient\u00f4t.<\/p>\n<p>De plus, cela peut \u00eatre fait de diff\u00e9rentes mani\u00e8res selon que vous choisissez d&rsquo;utiliser quelque chose comme <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> ou une autre strat\u00e9gie de chargement. Mais cela d\u00e9passe le cadre de cet article.<\/p>\n<h2>C&rsquo;est \u00e7a<\/h2>\n<p>L&rsquo;id\u00e9e derri\u00e8re tout cela est de comprendre comment les langages typ\u00e9s statiquement, qui sont souvent &#8211; mais pas toujours &#8211; des langages compil\u00e9s et comment typ\u00e9s dynamiquement &#8211; qui ne sont souvent pas compil\u00e9s (pensez JavaScript, PHP, etc.) &#8211; peuvent fonctionner de mani\u00e8re similaire, bien que diff\u00e9rentes fa\u00e7ons.<\/p>\n<p>Bref:<\/p>\n<ul>\n<li>les langages compil\u00e9s utilisent des linkers,<\/li>\n<li>les langages dynamiques utilisent des chargeurs automatiques.<\/li>\n<\/ul>\n<p>Et c&rsquo;est tout ce qu&rsquo;il y a \u00e0 faire, vraiment.<\/p>\n<p>mais pourquoi est-ce important? Pour comprendre les avantages du chargement automatique dans WordPress et avoir une base pour des sujets plus avanc\u00e9s, je trouve qu&rsquo;il est important de comprendre comment et pourquoi nous faisons certaines choses que nous faisons.<\/p>\n<p>Et si rien d&rsquo;autre, cela peut nous aider \u00e0 \u00eatre de meilleurs d\u00e9veloppeurs.<\/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>Les liens ne sont pas tout \u00e0 fait diff\u00e9rents du chargement automatique dans WordPress (et PHP). Voici comment ils fonctionnent et pourquoi il est utile de comprendre comment ils fonctionnent.<\/p>\n","protected":false},"author":1,"featured_media":223872,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,841,862],"tags":[1167],"class_list":["post-234140","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234140","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=234140"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234140\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/223872"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}