Perché preoccuparsi del caricamento automatico in WordPress, parte 2
Nel post precedente, ho spiegato alcuni punti sul motivo per cui penso che include_once, require_once e altre affermazioni simili si traducano in pratiche di sviluppo scadenti (almeno quando si tratta del lavoro che stiamo facendo con i nostri progetti WordPress ).
Se non l’hai letto, niente di grave. Il succo del post è che queste affermazioni fanno:
- debug più difficile,
- codice di tracciamento più difficile da fare.
In definitiva, sono cose che possiamo evitare. Ho chiuso il post con quanto segue:
Questo lascia ancora la questione del perché sia necessario il caricamento automatico (o qualsiasi inclusione di file di terze parti).
E anche se mi piacerebbe coprire tutti i dettagli in questo post, prenderà questo e un altro post come importante per comprendere alcuni argomenti fondamentali su linguaggi, interpreti e compilatori prima di andare troppo avanti.
Caricamento automatico in WordPress: tipi di lingue
Quando si tratta di linguaggi di programmazione, possono essere suddivisi in due tipi distinti di linguaggi:
- tipizzato statico
- tipizzato dinamicamente
Sono anche facili da individuare.
Linguaggi tipizzati staticamente
Un linguaggio tipizzato staticamente significa che quando si dichiara una variabile, come una stringa, un numero intero o un numero in virgola mobile, mantiene quel tipo per tutta la sua durata.
Ciò non significa che non possa essere modificato o analizzato in un altro tipo, ma l’idea è che tu dichiari il suo tipo ed è così che funziona.
Viene generalmente specificato come un determinato tipo quando viene dichiarato, come string o int, e viene visualizzato più spesso nei linguaggi compilati.
Linguaggi tipizzati dinamicamente
I linguaggi tipizzati dinamicamente, d’altra parte, hanno variabili più fluide, per mancanza di un termine migliore, in natura.
Cioè, puoi inizialmente dichiararlo come stringa, quindi confrontarlo con un numero intero e successivamente usarlo di nuovo come stringa.
L’interprete o il compilatore (a seconda della lingua che stai utilizzando) farà del suo meglio per dedurre ciò che stai cercando di fare in base al contesto di ciò che stai facendo nel tuo codice, ma non è sempre corretto.
Ciò può portare a strani effetti collaterali e bug.
JavaScript è così. Per vedere un esempio, apri la console del tuo browser e inserisci qualcosa di simile a quello che vedi nello screenshot seguente (e fai attenzione al risultato):
Si noti che quando utilizziamo un segno di doppio uguale standard, l’interprete forza la stringa nel tipo booleano anche se la stringa vera non è vera.
Il secondo caso è accurato (ed è per questo che dovrebbe essere usato quasi sempre il triplo uguale).
Inoltre, il modo in cui qualcosa può funzionare in una lingua non è come potrebbe funzionare in un’altra lingua.
La linea di fondo è che non aspettarti che le tue lingue facciano la stessa cosa solo perché potrebbero supportare la digitazione dinamica.
Che cosa ha a che fare con il caricamento automatico?
Ok, quindi abbiamo parlato un po’ di primitive e tutto ciò va bene, ma non fa molto quando si parla di classi, oggetti, istanze, caricamento automatico e così via, vero?
Lo scopo di sollevare gli argomenti di cui sopra è mostrare il ruolo che interpreti e compilatori svolgono quando lavorano con il codice in linguaggi dinamici.
E questo è importante perché PHP è un linguaggio dinamico.
A questo punto, inizialmente stavo per iniziare a guardare il codice PHP di esempio, gli spazi dei nomi, il caricamento automatico, le istruzioni include e tutto il resto, ma cerco di mantenere i miei articoli a una certa lunghezza e questo ha iniziato ad allungarsi un po’ più di quanto volevo .
Quindi il risultato finale di questo post, se dovessi riassumerlo, è questo:
Ai linguaggi tipizzati dinamicamente, come PHP, non viene concesso il lusso dei linguaggi compilati in cui tutto viene compilato in un unico binario. Dobbiamo dire al programma, in qualche modo, dove esistono le dipendenze nel contesto del programma più ampio.
Ed è quello che mirerò a trattare nel prossimo post.