{"id":234118,"date":"2022-11-15T11:04:00","date_gmt":"2022-11-15T08:04:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234118"},"modified":"2022-11-15T11:08:16","modified_gmt":"2022-11-15T08:08:16","slug":"por-que-molestarse-con-la-carga-automatica-en-wordpress-parte-3","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/por-que-molestarse-con-la-carga-automatica-en-wordpress-parte-3\/","title":{"rendered":"Por qu\u00e9 molestarse con la carga autom\u00e1tica en WordPress, Parte 3"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/es\/por-que-molestarse-con-la-carga-automatica-en-wordpress-parte-2\/\" title=\"En la \u00faltima publicaci\u00f3n\">En la \u00faltima publicaci\u00f3n<\/a>, dije que no pod\u00edamos permitirnos algunos de los mismos lujos que tienen los lenguajes compilados y tipificados est\u00e1ticamente. Espec\u00edficamente, estaba hablando de la idea de no tener que lidiar con cargadores autom\u00e1ticos.<\/p>\n<p>En cambio, los lenguajes compilados pueden tomar todos los archivos que componen el programa, procesarlos y agruparlos en un solo binario.<\/p>\n<p>Pero para hacer eso, necesita un tipo espec\u00edfico de programa para hacerlo.<\/p>\n<h2>Autocarga en WordPress: Linkers y Autoloaders<\/h2>\n<p>Es decir, utiliza una utilidad llamada <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linker_(computing)\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">enlazador<\/a>. Cubrir\u00e9 eso brevemente en un momento, pero ver el papel que juega en el contexto de los lenguajes compilados puede ayudar a dibujar una analog\u00eda con c\u00f3mo funciona la carga autom\u00e1tica en WordPress (y PHP).<\/p>\n<h3>\u00bfQu\u00e9 es un enlazador?<\/h3>\n<p>Seg\u00fan el lenguaje con el que est\u00e9 trabajando, especialmente con los lenguajes de programaci\u00f3n orientados a objetos, es probable que el c\u00f3digo se distribuya en varios archivos.<\/p>\n<p>Adem\u00e1s, cada uno de estos archivos se incluir\u00e1 en sus paquetes (nos referimos a estos como espacios de nombres como PHP, y la mayor\u00eda de los lenguajes compilados tambi\u00e9n hacen lo mismo). Entonces, para fines de demostraci\u00f3n, suponga que los archivos est\u00e1n incluidos en sus espacios de nombres.<\/p>\n<p>Luego, en todo el c\u00f3digo base, tiene todos estos archivos que est\u00e1n relacionados a trav\u00e9s de espacios de nombres pero distribuidos en archivos separados.<\/p>\n<p>Cuando llega el momento de compilar todo esto en un solo binario ejecutable, un programa llamado enlazador analiza el c\u00f3digo y funciona m\u00e1gicamente para ayudar a crear un solo binario ejecutable (en lugar de una colecci\u00f3n de archivos como estamos acostumbrados a ver en proyectos basados \u200b\u200ben PHP).<\/p>\n<h3>\u00bfY la carga autom\u00e1tica?<\/h3>\n<p>Entonces, \u00bfcu\u00e1les son las similitudes entre la carga autom\u00e1tica y la vinculaci\u00f3n? Como se mencion\u00f3, los proyectos que construimos en WordPress (y PHP) residen consistentemente en archivos separados. Es decir, nunca se compilar\u00e1n en un archivo.<\/p>\n<p>Dir\u00eda que alguna vez (aunque esto todav\u00eda sucede), usamos <a href=\"https:\/\/php.net\/manual\/en\/function.include-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">include_once<\/a> o <a href=\"https:\/\/php.net\/manual\/en\/function.require-once.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">require_once<\/a> para incorporar todas las dependencias que necesitamos. Pero la carga autom\u00e1tica niega la necesidad de hacer esto.<\/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=\"Por qu\u00e9 molestarse con la carga autom\u00e1tica en WordPress, Parte 3\"><\/a><\/p>\n<p>Escritura manual de un cargador autom\u00e1tico (sin usar PSR4).<\/p>\n<p>En cambio, un cargador autom\u00e1tico puede tomar el c\u00f3digo que tenemos cada vez que, por ejemplo, instanciamos una clase y luego carga autom\u00e1ticamente (de ah\u00ed su nombre) el archivo sin la necesidad de incluirlo manualmente.<\/p>\n<h3>la analog\u00eda<\/h3>\n<p>Mientras que un enlazador analizar\u00e1 el c\u00f3digo base de un programa y ensamblar\u00e1 autom\u00e1ticamente el binario, un cargador autom\u00e1tico necesitar\u00e1 alg\u00fan tipo de configuraci\u00f3n para saber d\u00f3nde est\u00e1n las clases, c\u00f3mo ubicar un archivo en el sistema de archivos dado su espacio de nombres y nombre de clase, y pronto.<\/p>\n<p>Adem\u00e1s, hay diferentes formas de hacerlo dependiendo de si opta por usar algo como <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> u otra estrategia de carga. Pero eso est\u00e1 m\u00e1s all\u00e1 del alcance de esta publicaci\u00f3n.<\/p>\n<h2>Eso es todo<\/h2>\n<p>La idea detr\u00e1s de todo esto es comprender c\u00f3mo los lenguajes tipificados est\u00e1ticamente, que a menudo, aunque no siempre, son lenguajes compilados y c\u00f3mo los tipificados din\u00e1micamente, que a menudo no est\u00e1n compilados (piense en JavaScript, PHP, etc.), pueden funcionar de manera similar, aunque diferentes caminos.<\/p>\n<p>En breve:<\/p>\n<ul>\n<li>los lenguajes compilados usan enlazadores,<\/li>\n<li>los lenguajes din\u00e1micos usan cargadores autom\u00e1ticos.<\/li>\n<\/ul>\n<p>Y eso es todo lo que hay que hacer, de verdad.<\/p>\n<p>Pero \u00bfPor qu\u00e9 es importante? Para comprender los beneficios de la carga autom\u00e1tica en WordPress y tener una base para temas m\u00e1s avanzados, creo que es importante comprender c\u00f3mo y por qu\u00e9 hacemos ciertas cosas que hacemos.<\/p>\n<p>Y si nada m\u00e1s, puede ayudarnos a ser mejores desarrolladores.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los enlazadores no son del todo diferentes de la carga autom\u00e1tica en WordPress (y PHP). As\u00ed es como funcionan y por qu\u00e9 es \u00fatil entender c\u00f3mo funcionan.<\/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":[716,840,861],"tags":[1172],"class_list":["post-234118","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/234118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=234118"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/234118\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/223872"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=234118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=234118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=234118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}