Perché preoccuparsi del caricamento automatico in WordPress, parte 3
Nell’ultimo post, ho detto che non potevamo permetterci alcuni degli stessi lussi che hanno i linguaggi compilati e tipizzati staticamente. Nello specifico, stavo parlando dell’idea di non avere a che fare con i caricatori automatici.
Invece, i linguaggi compilati possono prendere tutti i file che compongono il programma, elaborarli e raggrupparli in un unico binario.
Ma per farlo, ha bisogno di un tipo specifico di programma per farlo.
Caricamento automatico in WordPress: linker e caricatori automatici
Cioè, usa un’utilità chiamata linker. Lo tratterò brevemente per un momento, ma vedere il ruolo che svolge nel contesto dei linguaggi compilati può aiutare a tracciare un’analogia con il modo in cui funziona il caricamento automatico in WordPress (e PHP).
Cos’è un linker?
A seconda del linguaggio con cui stai lavorando, in particolare con i linguaggi di programmazione orientati agli oggetti, è probabile che il codice venga distribuito su più file.
Inoltre, ciascuno di questi file verrà raggruppato nei loro pacchetti (ci riferiamo a questi come spazi dei nomi come PHP e anche la maggior parte dei linguaggi compilati fa lo stesso). Quindi, a scopo dimostrativo, si supponga che i file siano inclusi nei rispettivi spazi dei nomi.
Quindi, in tutta la base di codice, hai tutti questi file correlati tramite spazi dei nomi ma distribuiti su file separati.
Quando arriva il momento di compilare tutto questo in un unico binario eseguibile, un programma chiamato linker analizza il codice e lo fa magicamente per aiutare a creare un singolo binario eseguibile (rispetto a una raccolta di file come siamo abituati a vedere in progetti basati su PHP).
E il caricamento automatico?
Quindi quali sono le somiglianze tra caricamento automatico e collegamento? Come accennato, i progetti che costruiamo in WordPress (e PHP) risiedono costantemente in file separati. Cioè, non verranno mai compilati in un file.
Direi che una volta (anche se questo accade ancora), usiamo include_once o require_once per inserire tutte le dipendenze di cui abbiamo bisogno. Ma il caricamento automatico annulla la necessità di farlo.
Scrittura manuale di un caricatore automatico (senza utilizzare PSR4).
Invece, un caricatore automatico può prendere il codice che abbiamo ogni volta che, diciamo, istanziamo una classe e quindi carichiamo automaticamente (da cui il nome) il file senza la necessità di includere manualmente il file.
L’analogia
Mentre un linker analizzerà la codebase di un programma e assemblerà automaticamente il binario, un caricatore automatico avrà bisogno di un qualche tipo di configurazione per fargli sapere dove si trovano le classi, come individuare un file sul file system dato il suo spazio dei nomi e il nome della classe, e presto.
Inoltre, ci sono diversi modi in cui questo può essere fatto a seconda se si sceglie di utilizzare qualcosa come PSR-4 o un’altra strategia di caricamento. Ma questo va oltre lo scopo di questo post.
Questo è tutto
L’idea alla base di tutto questo è capire come i linguaggi tipizzati staticamente, che sono spesso – anche se non sempre – linguaggi compilati e come digitati dinamicamente – che spesso non sono compilati (si pensi a JavaScript, PHP, ecc.) – possano funzionare in modo simile, anche se diversi modi.
In breve:
- i linguaggi compilati usano linker,
- i linguaggi dinamici utilizzano caricatori automatici.
E questo è tutto quello che c’è da fare, davvero.
Ma perché è importante? Per comprendere i vantaggi del caricamento automatico in WordPress e per avere una base per argomenti più avanzati, trovo che sia importante capire come e perché facciamo determinate cose che facciamo.
E se non altro, può aiutarci a essere sviluppatori migliori.
