mira... definitivamente el singleton te ahorra del pensamiento de usar globales... ¿porque?
pues precisamente siempre vas a obtener la misma instancia siempre, ese es el objetivo de dicho patrón.... entonces, declarar la variable fuera de las funciones usando singleton, y luego usar
global para accesar a ella desde otro contexto pierde sentido... y en todo caso fue en vano implementar el singleton...
lo único que debes saber es que usar globales no es seguro, imagina que en algún punto del script haces
unset() de tu variable global
$db ¡pues dejaría de funcionar todo!!
bueno, el punto es que deberías acostumbrarte al uso de patrones....