Por qué molestarse con la carga automática en WordPress, Parte 3
En la última publicación, dije que no podíamos permitirnos algunos de los mismos lujos que tienen los lenguajes compilados y tipificados estáticamente. Específicamente, estaba hablando de la idea de no tener que lidiar con cargadores automáticos.
En cambio, los lenguajes compilados pueden tomar todos los archivos que componen el programa, procesarlos y agruparlos en un solo binario.
Pero para hacer eso, necesita un tipo específico de programa para hacerlo.
Autocarga en WordPress: Linkers y Autoloaders
Es decir, utiliza una utilidad llamada enlazador. Cubriré eso brevemente en un momento, pero ver el papel que juega en el contexto de los lenguajes compilados puede ayudar a dibujar una analogía con cómo funciona la carga automática en WordPress (y PHP).
¿Qué es un enlazador?
Según el lenguaje con el que esté trabajando, especialmente con los lenguajes de programación orientados a objetos, es probable que el código se distribuya en varios archivos.
Además, cada uno de estos archivos se incluirá en sus paquetes (nos referimos a estos como espacios de nombres como PHP, y la mayoría de los lenguajes compilados también hacen lo mismo). Entonces, para fines de demostración, suponga que los archivos están incluidos en sus espacios de nombres.
Luego, en todo el código base, tiene todos estos archivos que están relacionados a través de espacios de nombres pero distribuidos en archivos separados.
Cuando llega el momento de compilar todo esto en un solo binario ejecutable, un programa llamado enlazador analiza el código y funciona mágicamente para ayudar a crear un solo binario ejecutable (en lugar de una colección de archivos como estamos acostumbrados a ver en proyectos basados en PHP).
¿Y la carga automática?
Entonces, ¿cuáles son las similitudes entre la carga automática y la vinculación? Como se mencionó, los proyectos que construimos en WordPress (y PHP) residen consistentemente en archivos separados. Es decir, nunca se compilarán en un archivo.
Diría que alguna vez (aunque esto todavía sucede), usamos include_once o require_once para incorporar todas las dependencias que necesitamos. Pero la carga automática niega la necesidad de hacer esto.
Escritura manual de un cargador automático (sin usar PSR4).
En cambio, un cargador automático puede tomar el código que tenemos cada vez que, por ejemplo, instanciamos una clase y luego carga automáticamente (de ahí su nombre) el archivo sin la necesidad de incluirlo manualmente.
la analogía
Mientras que un enlazador analizará el código base de un programa y ensamblará automáticamente el binario, un cargador automático necesitará algún tipo de configuración para saber dónde están las clases, cómo ubicar un archivo en el sistema de archivos dado su espacio de nombres y nombre de clase, y pronto.
Además, hay diferentes formas de hacerlo dependiendo de si opta por usar algo como PSR-4 u otra estrategia de carga. Pero eso está más allá del alcance de esta publicación.
Eso es todo
La idea detrás de todo esto es comprender cómo los lenguajes tipificados estáticamente, que a menudo, aunque no siempre, son lenguajes compilados y cómo los tipificados dinámicamente, que a menudo no están compilados (piense en JavaScript, PHP, etc.), pueden funcionar de manera similar, aunque diferentes caminos.
En breve:
- los lenguajes compilados usan enlazadores,
- los lenguajes dinámicos usan cargadores automáticos.
Y eso es todo lo que hay que hacer, de verdad.
Pero ¿Por qué es importante? Para comprender los beneficios de la carga automática en WordPress y tener una base para temas más avanzados, creo que es importante comprender cómo y por qué hacemos ciertas cosas que hacemos.
Y si nada más, puede ayudarnos a ser mejores desarrolladores.
