{"id":229438,"date":"2022-11-04T17:45:00","date_gmt":"2022-11-04T14:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229438"},"modified":"2022-11-09T07:02:56","modified_gmt":"2022-11-09T04:02:56","slug":"prototypage-rapide-presentation-du-chargement-automatique","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-presentation-du-chargement-automatique\/","title":{"rendered":"Prototypage rapide\u00a0: pr\u00e9sentation du chargement automatique"},"content":{"rendered":"\n<p>Au cours des derniers articles, j&rsquo;ai parcouru le processus consistant \u00e0 faire passer une id\u00e9e du concept au prototype.<\/p>\n<p>Certes, il y a certaines choses que vous pourriez changer (et il y a certaines choses que je changerais concernant l&rsquo;organisation des cours). Mais le but de la s\u00e9rie n&rsquo;est pas de passer en revue toutes les diff\u00e9rentes techniques orient\u00e9es objet qui peuvent \u00eatre utilis\u00e9es pour cr\u00e9er une solution.<\/p>\n<p>Au lieu de cela, il s&rsquo;agit de prendre un prototype et de le convertir en quelque chose d&rsquo;un peu plus professionnel. Il y a encore une chose que nous devons faire, cependant.<\/p>\n<p>\u00c0 l&rsquo;heure actuelle, nous incluons tous nos fichiers par le biais d&rsquo;instructions require. Et cela fonctionne bien pour les petits fichiers, mais l&rsquo;introduction du chargement automatique en conjonction avec les espaces de noms peut rendre l&rsquo;application encore plus propre.<\/p>\n<p>Et c&rsquo;est ce que nous allons faire.<\/p>\n<h3>Pr\u00e9sentation du chargement automatique<\/h3>\n<p>Rappelez-vous d&rsquo;un article pr\u00e9c\u00e9dent (si vous l&rsquo;avez lu), que le chargement automatique est une id\u00e9e simple\u00a0:<\/p>\n<p>\u00c7a sonne bien, non\u00a0? Mais il y a une mise en garde: vous devez \u00e9crire le chargeur automatique. PHP ne peut pas le comprendre tout seul.<\/p>\n<p>Et c&rsquo;est pourquoi je suis partisan de m&rsquo;assurer que nos espaces de noms suivent \u00e9galement une structure de r\u00e9pertoires coh\u00e9rente\u00a0: si vous analysez l&rsquo;espace de noms et le nom du fichier, il est relativement facile de cr\u00e9er le chemin d&rsquo;acc\u00e8s au fichier et de le charger automatiquement.<\/p>\n<p>Cela vous semble d\u00e9routant\u00a0? Tout d&rsquo;abord, regardons o\u00f9 nous placerons l&rsquo;autoloader concernant notre structure de r\u00e9pertoires\u00a0:<\/p>\n<p>Ensuite, mettez \u00e0 jour le fichier d&rsquo;amor\u00e7age de votre plug-in afin qu&rsquo;il ne <a href=\"https:\/\/gist.github.com\/tommcfarlin\/4f5087613f01dcb35b7fb5e79c69401d#file-00-plugin-bootstrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00e9cessite que le fichier de chargement automatique<\/a>.<\/p>\n<pre><code>&lt;?php\n\/**\n * Three Recent Posts\n *\n * @package     TRP\n * @author      Tom McFarlin\n * @copyright   2017 Tom McFarlin\n * @license     MIT\n *\n * @wordpress-plugin\n * Plugin Name: Three Recent Posts\n * Plugin URI:  https:\/\/tommcfarlin.com\/three-recent-posts\/\n * Description: Displays the three mot recent posts in your post editor screen.\n * Version:     1.0.0\n * Author:      Tom McFarlin\n * Author URI:  https:\/\/tommcfarlin.com\n * Text Domain: three-recent-posts\n * License:     GPL\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\/\n\nnamespace McFarlinTRP;\nuse McFarlinTRPDisplayMeta_Box;\n\n\/\/ Import the autoloader.\ninclude_once 'Includes\/autoload.php';\n\nadd_action( 'add_meta_boxes', __NAMESPACE__. 'trp_start' );\n\/**\n * Starts the plugin.\n *\/\nfunction trp_start() {\n\n    $meta_box = new Meta_Box( dirname( __FILE__) );\n    $meta_box-&gt;init();\n}\n<\/code><\/pre>\n<p>Bien s\u00fbr, nous avons besoin du chargeur automatique pour charger nos fichiers. Essentiellement, la fa\u00e7on dont cela fonctionne est la suivante:<\/p>\n<ol>\n<li>s\u00e9parer les composants du nom du fichier entrant (comme le chemin du r\u00e9pertoire et le nom du fichier),<\/li>\n<li>remplacez tous les traits de soulignement par des traits d&rsquo;union pour vous assurer que le fichier suit la structure du nom de fichier de la classe,<\/li>\n<li>commencer \u00e0 construire le nom de chemin complet (qui est le r\u00e9pertoire, le nom du fichier, etc.),<\/li>\n<li>parcourir l&rsquo;espace de noms jusqu&rsquo;au nom de la classe et cr\u00e9er un nom complet pour le fichier,<\/li>\n<li>l&rsquo;inclure dans le projet.<\/li>\n<\/ol>\n<p>C&rsquo;est simple, n&rsquo;est-ce pas? Si vous suivez un espace de noms, un r\u00e9pertoire, un nom de classe et un sch\u00e9ma de d\u00e9nomination de fichier coh\u00e9rents, vous pouvez r\u00e9utiliser le m\u00eame chargeur automatique dans n&rsquo;importe quel projet.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/4f5087613f01dcb35b7fb5e79c69401d#file-00-autoload-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Voici une copie d&rsquo;un chargeur automatique<\/a> que j&rsquo;utilise et d\u00e9posez-le dans presque tous les projets que j&rsquo;utilise. Vous verrez qu&rsquo;il suit exactement ce qui est couvert ci-dessus\u00a0:<\/p>\n<pre><code>&lt;?php\n\/**\n * Automatically loads the specified file.\n *\n * @package McFarlinTFP\n *\/\n\nnamespace McFarlinTFP;\n\n\/**\n * Automatically loads the specified file.\n *\n * Examines the fully qualified class name, separates it into components, then creates\n * a string that represents where the file is loaded on disk.\n *\n * @package McFarlinTFP;\n *\/\nspl_autoload_register(function( $filename) {\n\n    \/\/ First, separate the components of the incoming file.\n    $file_path = explode( '', $filename );\n\n    \/\/ Get the last index of the array. This is the class we're loading.\n    if (isset( $file_path[ count( $file_path) - 1 ])) {\n\n        $class_file = strtolower(\n            $file_path[ count( $file_path) - 1 ]\n        );\n\n        \/**\n         * The classname has an underscore, so we need to replace it\n         * with a hyphen for the file name.\n         *\/\n        $class_file = str_ireplace( '_', '-', $class_file );\n        $class_file = \"class-$class_file.php\";\n    }\n\n    \/**\n     * Find the fully qualified path to the class file by iterating through the $file_path array.\n     * We ignore the first index since it's always the top-level package. The last index is always\n     * the file so we append that at the end.\n     *\/\n    $fully_qualified_path = trailingslashit(\n        dirname(\n            dirname( __FILE__)) );\n\n    \/**\n     * We start at the second index of the namespace because our directory\n     * structure does not include 'McFarlin\/TRP'.\n     *\/\n    for ($i = 2; $i &lt; count( $file_path) - 1; $i++) {\n\n        $dir = strtolower( $file_path[ $i ] );\n        $fully_qualified_path .= trailingslashit( $dir );\n    }\n    $fully_qualified_path .= $class_file;\n\n    \/\/ Now we include the file.\n    if (file_exists( $fully_qualified_path)) {\n        include_once( $fully_qualified_path );\n    }\n});<\/code><\/pre>\n<p>Et avec cela, le plugin est boucl\u00e9 jusqu&rsquo;\u00e0 la version 1.0.0. Vous pouvez <a href=\"https:\/\/github.com\/tommcfarlin\/three-recent-posts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le v\u00e9rifier sur GitHub<\/a> (\u00e0 la fois litt\u00e9ralement et juste pour examen). Et j&rsquo;esp\u00e8re que cela a aid\u00e9 \u00e0 parcourir le processus de passage du prototypage rapide au concept dans le concept de WordPress.<\/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:\/\/wordpress.mediadoma.com\/fr\/prototypage-rapide-avec-wordpress-analyse-de-concept\/\" title=\"Prototypage rapide avec WordPress: analyse de concept\">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:\/\/tommcfarlin.com\/introducing-autoloading\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">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>L&rsquo;introduction du chargement automatique en conjonction avec les espaces de noms dans un plugin WordPress peut rendre l&rsquo;application encore plus propre.<\/p>\n","protected":false},"author":1,"featured_media":220982,"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-229438","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\/229438","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=229438"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229438\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/220982"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}