Chi può discutere contro l'esperienza, i diplomi universitari e l'ingegneria del software? Non me. Vorrei solo dire che nello sviluppo di applicazioni PHP a pagina singola orientate agli oggetti, mi diverto di più quando so di poter costruire l'intera cosa da zero senza preoccuparmi delle collisioni nello spazio dei nomi. Costruire da zero è qualcosa che molte persone non fanno più. Hanno un lavoro, una scadenza, un bonus o una reputazione di cui preoccuparsi. Questi tipi tendono a utilizzare così tanto codice precostruito con una posta in gioco alta, che non possono rischiare di utilizzare variabili globali.
Può essere un male usare le variabili globali, anche se vengono utilizzate solo nell'area globale di un programma, ma non dimentichiamoci di coloro che vogliono solo divertirsi e far funzionare qualcosa .
Se questo significa usare poche variabili (<10) nello spazio dei nomi globale, queste vengono utilizzate solo nell'area globale di un programma, così sia. Sì, sì, MVC, inserimento delle dipendenze, codice esterno, blah, blah, blah, blah. Ma, se hai contenuto il 99,99% del tuo codice in spazi dei nomi e classi, e il codice esterno è sandbox, il mondo non finirà (ripeto, il mondo non finirà) se usi una variabile globale.
In generale, non direi che l'uso di variabili globali è una cattiva pratica . Direi che l'utilizzo di variabili globali (flag e simili) al di fuori dell'area globale di un programma è fonte di guai e (a lungo andare) sconsiderato perché puoi perdere traccia dei loro stati piuttosto facilmente. Inoltre, direi che più impari, meno dipenderai dalle variabili globali perché avrai sperimentato la "gioia" di rintracciare i bug associati al loro utilizzo. Questo da solo ti incentiverà a trovare un altro modo per risolvere lo stesso problema. Per coincidenza, questo tende a spingere le persone PHP nella direzione di imparare a usare gli spazi dei nomi e le classi (membri statici, ecc ...).
Il campo dell'informatica è vasto. Se spaventiamo tutti dal fare qualcosa perché lo etichettiamo male , allora perdono il divertimento di capire veramente il ragionamento dietro l'etichetta.
Usa le variabili globali se devi, ma poi vedi se puoi risolvere il problema senza di esse. Collisioni, test e debug significano di più quando si comprende intimamente la vera natura del problema, non solo una descrizione del problema.