Kto może spierać się z doświadczeniem, stopniami wyższymi i inżynierią oprogramowania? Nie ja. Powiedziałbym tylko, że przy tworzeniu aplikacji PHP zorientowanych obiektowo na pojedynczą stronę, bawię się lepiej, gdy wiem, że mogę zbudować całość od zera, nie martwiąc się o kolizje przestrzeni nazw. Budowanie od podstaw to coś, czego wiele osób już nie robi. Mają pracę, termin, premię lub reputację, o którą muszą się troszczyć. Te typy mają tendencję do używania tak dużo gotowego kodu z wysokimi stawkami, że nie mogą w ogóle ryzykować używania zmiennych globalnych.
Używanie zmiennych globalnych może być złe, nawet jeśli są one używane tylko w globalnym obszarze programu, ale nie zapominajmy o tych, którzy po prostu chcą się bawić i sprawić, by coś działało .
Jeśli to oznacza użycie kilku zmiennych (<10) w globalnej przestrzeni nazw, które są używane tylko w globalnym obszarze programu, niech tak będzie. Tak, tak, MVC, wstrzykiwanie zależności, kod zewnętrzny, bla, bla, bla, bla. Ale jeśli zawarłeś 99,99% swojego kodu w przestrzeni nazw i klas, a kod zewnętrzny jest w piaskownicy, świat się nie skończy (powtarzam, świat się nie skończy), jeśli użyjesz zmiennej globalnej.
Generalnie nie powiedziałbym, że używanie zmiennych globalnych jest złą praktyką . Powiedziałbym, że używanie zmiennych globalnych (flag itp.) Poza globalnym obszarem programu jest problemem i (na dłuższą metę) nierozsądne, ponieważ można dość łatwo stracić orientację w ich stanach. Powiedziałbym również, że im więcej się nauczysz, tym mniej będziesz zależny od zmiennych globalnych, ponieważ doświadczysz „radości” ze śledzenia błędów związanych z ich użyciem. Już samo to zachęci Cię do znalezienia innego sposobu rozwiązania tego samego problemu. Przypadkowo popycha to ludzi PHP w kierunku uczenia się, jak używać przestrzeni nazw i klas (statyczne elementy członkowskie itp.).
Dziedzina informatyki jest rozległa. Jeśli odstraszamy wszystkich od zrobienia czegoś, ponieważ określamy to jako złe , wtedy tracą radość z prawdziwego zrozumienia argumentów stojących za etykietą.
Jeśli musisz, użyj zmiennych globalnych, ale zobacz, czy możesz rozwiązać problem bez nich. Kolizje, testowanie i debugowanie mają większe znaczenie, gdy dokładnie zrozumiesz prawdziwą naturę problemu, a nie tylko opis problemu.