ganz einfach: solange die globalen variabel sinnvoll gewählt werden und andere einfach übergeben werden, dann klappt alles reibungslos.
Beispiel:
$dataBaseReference wäre global total sinnvoll und das auch begründet. warum sollte jedes unterprogramm eine datenbankverbindung aufbauen, oder warum sollte ich die immer übergeben?
Vergleichbare Variablen sollen in meinen Augen IMMER global sein. Dafür gibt es das ja.
Alle anderen kleinen Variablen, die fast nirgendwo gebraucht werden, können ruhig übergeben werden. Sollen die geändert werden, gibts call by reference.