Stosowanie zmiennych globalnych jest złą praktyką i należy tego unikać.
Jeżeli stosujesz w swoim kodzie global $zmienna; to znak, że poległeś przy projektowaniu aplikacji i dzieleniu jej na moduły/funkcje.
Nad zmienną globalną nie masz kontroli.
Przykład? Otwórz sobie skrypt tego forum ( jest dostępne na gh ) , widzisz jak rozbudowana jest ta aplikacja?
Wyobraź sobie teraz, że jako developer wbijasz do drużyny i dokonujesz pewnych zmian w tej aplikacji ( jakiś tam nowy feature ) i nazwałeś sobie zmienna np $alamakota, nagle cała apka staje, albo wariuje, a ty nie wiesz co się dzieje. Okazuje się, że jakiś geniusz użył w kodzie global $alamakota . ( Tak w tym Q2A używane są globale :d)
Czym zastąpić global?
To proste, wystarczy poczytać o wzorcu Dependency Injection i wstrzykiwać sobie do funkcji jako kolejny parametr np połączenie z bazą.
To tyle z mojej strony.